Linux 替换两个字符之间的逗号
我有一个txt文件,我需要用引号之间的空格替换逗号 例如:Linux 替换两个字符之间的逗号,linux,shell,sed,Linux,Shell,Sed,我有一个txt文件,我需要用引号之间的空格替换逗号 例如: This,is,example,"need,delete comma",xxxx 结果应该是: This,is,example,"need delete comma",xxxx 我有这个命令,但它错了: sed -i '/^"/,/^"/s/.,/ /' output.txt 试试这个: awk'NR%2-1{gsub(/,/,“”)}1'RS=\“ORS=\”input.txt>output.txt 输入: 例如,“需要,删除逗
This,is,example,"need,delete comma",xxxx
结果应该是:
This,is,example,"need delete comma",xxxx
我有这个命令,但它错了:
sed -i '/^"/,/^"/s/.,/ /' output.txt
试试这个:
awk'NR%2-1{gsub(/,/,“”)}1'RS=\“ORS=\”input.txt>output.txt
输入:
例如,“需要,删除逗号”,xxxx
输出:
例如,“需要删除逗号”,xxxx
复合awk解决方案:
示例testfile
:
This,is,example,"need,delete comma",xxxx
asda
asd.dasd,asd"sdf,dd","sdf,sdfsdf"
"some,text,here" another text there""
工作:
awk -F'"' '$0~/"/ && NF>1{ for(i=1;i<=NF;i++) { if(!(i%2)) gsub(/,/," ",$i) }}1' OFS='"' testfile
下面的awk如何,我只查找“…”之间的匹配,然后简单地删除该匹配中的所有逗号。然后将其新值替换为旧的“.”值 EDIT1:在看到RomanPerekhrest的输入文件后,上面的代码有一点变化,这将禁止在任何行中更改“,”
awk '{match($0,/\".*\"/);val=substr($0,RSTART,RLENGTH);gsub(/[^","],/," ",val);gsub(/\".*\"/,val,$0)} 1' Input_file
例如,echo'This是“need,delete comma”,xxxx'| awk-F\“{sub(/,/,”“,$2);print}'OFS=\”
例如,“需要删除逗号”,xxxx我很好奇,为什么要替换逗号?您是否试图解决没有正确的CSV解析器的问题?这将在多行输出的末尾添加尾随的
“
。您可以从答案中对测试文件进行测试
awk '{match($0,/\".*\"/);val=substr($0,RSTART,RLENGTH);gsub(/,/," ",val);gsub(/\".*\"/,val,$0)} 1' Input_file
awk '{match($0,/\".*\"/);val=substr($0,RSTART,RLENGTH);gsub(/[^","],/," ",val);gsub(/\".*\"/,val,$0)} 1' Input_file