我有以下格式的csv文件之间的特殊字符表情..经常寻找双引号
001,"Craig,betsy",Newyork
002,"sam.nathan",charlotte
我需要找到该文件在双引号内的逗号..好心帮我在获取在UNIX或Perl的正则表达式。
否则避免双引号内的逗号..
我需要输出的文件是这样
001 |“Craig,betsy”|纽约
002 |“sam.nathan”| charlotte。
请添加输入帮助..
我有以下格式的csv文件之间的特殊字符表情..经常寻找双引号
001,"Craig,betsy",Newyork
002,"sam.nathan",charlotte
我需要找到该文件在双引号内的逗号..好心帮我在获取在UNIX或Perl的正则表达式。
否则避免双引号内的逗号..
我需要输出的文件是这样
001 |“Craig,betsy”|纽约
002 |“sam.nathan”| charlotte。
请添加输入帮助..
Perl的一个班轮
随着你的输入,你可以使用这个:
perl -ne 'while(m/"[^",]+\K,(?=[^",]*")/g){print "$&\n";}' yourfile
+1在此正则表达式中适用于'\ K' – anubhava
这里是一个awk
将改变提交分隔符到|
awk -F, '{for (i=1;i<NF;i++) {c+=gsub(/\"/,"&",$i);printf "%s"(c%2?FS:"|"),$i}print $NF}' t
001|"Craig,betsy"|Newyork
002|"sam.nathan"|charlotte
它将数据划分为由,
分隔的组。然后它会统计它在每个字段中找到多少个"
。
当数可以除以2,然后用|
,如果不使用,
如果你有gnu awk 4.xxx
你可以使用FPAT
awk '{for (i=1;i<NF;i++) printf "%s|",$i;print $NF}' FPAT='[^,]+|"[^"]+"' t
001|"Craig,betsy"|Newyork
002|"sam.nathan"|charlotte
如何做到这一点FPAT='[^,]+|"[^"]+"'
工作?
它定义了一个字段的样子,而不是什么是分隔符。
[^,]+
一个字段是一些不包含,
或
"[^"]+"
一些开始与"
然后字符不等于"
并用"
结束。 Eks "my,data"
或"data"
一旦您在引号内找到逗号,您究竟想做什么? – hwnd
你的意思是什么?寻找什么? 'sed -r -n'/".*,.*"/p''将会在双引号内打印出逗号。 – WKPlus
您可能想要使用[CSV解析器](https://metacpan.org/pod/Text::CSV)。 –