从CSV(双引号括起来)文件如何取代数据双引号(意味着双引号内的数据)从第三个html字符串字段(它有数据逗号也即逗号内的数据)与~符号与unix。我们不应该删除任何其他双引号。
输入文件:
F1,F2,F3
"11111","ABABDBDA","<div style="text-aaa: justify;"> Il MMM delinea l’evvv dei ccccc e dei ruorrrrli, degli organi sss, alaaaala "
"22222","PPPPPPPP","<p style="text-align: justify;"> <span style="color:#ff0000;"><strong>Disponibile dal 25/03</strong></span></p> <div style="text-align: justify;"> Il manuale delinea l’evoluzione dei , ;"> </div>"
"333333","QQQQQQQ","<p style="text-align: justify;"> Il libro analizza i singoli cicli gestionali, partendo dalle rilevazioni, contabili per giungere poi alla destinazione di "
预期输出文件:
F1,F2,F3
"11111","ABABDBDA","<div style=~text-aaa: justify;> Il MMM delinea l’evvv dei ccccc e dei ruorrrrli, degli organi sss, alaaaala"
"22222","PPPPPPPP","<p style=~text-align: justify;~> <span style=~color:#ff0000;~><strong>Disponibile dal 25/03</strong></span></p> <div style=~text-align: justify;~> Il manual"
"333333","QQQQQQQ","<p style=~text-align: justify;~> Il libro analizza i singoli cicli gestionali, partendo dalle rilevazioni, contabili per giungere poi alla destinazione"
我尝试使用awk命令,但它没有提供预期的输出
3条答案
按热度按时间j2qf4p5b1#
使用Miller 6并运行
你得到
一些注意事项:
--lazy-quotes
,接受出现在无引号字段中的引号,以及出现在有引号字段中的非双引号put '$F3=gsub($F3,"\"","~")'
以搜索"
并将其替换为~
。x8diyxa72#
如果你在awk中找不到解决方案,这里有一个非常简单的Go语言程序,它使用标准库的CSV解析器和它的LazyQuotes选项(重点是针对你的情况而添加的):
如果LazyQuotes为true,则引号可能出现在未加引号的字段中,非双引号可能出现在加引号的字段中。
从您的原始语句和示例输入来看,我认为唯一的问题是在创建CSV时HTML属性的引号没有正确转义,我认为LazyQuotes选项可以正确处理这个问题,而且在我看来,这比更改HTML更可取:
在表格视图中:
| F1代|第二代|三层|
| - ------|- ------|- ------|
| 小行星1111|阿巴布达|IlMMM delinea l 'evvv我的cccc和我的ruorrrrli,从组织...|
| 小行星2222|噗噗噗|2003年25日解散〈/stro...|
| 小行星33333|QQQQQQ|他的书分析了他的管理,他的合伙人...|
下面是一个较小的例子来尝试和强调:
1.创建CSV阅读器
1.设置LazyQuotes选项
1.阅读所有记录
1.创建CSV编写器
1.写入所有记录
不需要特殊处理,CSV解析器只为您做正确的事情:
您可以在Go Playground中查看并运行它。
下面是一个更完整的示例,用于从文件读取并写入新文件,并进行错误检查:
zbq4xfa03#
您可以使用这个ruby:
图纸: