我正在尝试在脚本中查找并替换正则表达式模式。现有字符串将类似于
Input Sample : abc,c,efh,hj35,"2,6ag=a193",02_TG,",,,,10,,f,,",gf,g,f,,"1720a5",Thgf"18,dhg;_,2,53",0,hg,cj,cj
Expected Output : abc,c,efh,hj35,"-",02_TG,"-",gf,g,f,,"-",Thgf"-",0,hg,cj,cj
和我的替换字符串如“ - ”。我尝试过的代码是
sed -e 's/".*"/"-"/g filename
但它没有用!
答案 0 :(得分:0)
如果只想匹配一个字符,则不应使用*
星号,因为它是贪婪的,并尽可能多地匹配。
所以你只需要s/,/-/
就可以了。
但是如果你想保留之前的 之后的,那么你可以将它们存储在 match-group 括号中,然后反向引用它们,如下所示:
s/(.*?),(.*?)/\1-\2/
或某些搜索引擎
s/(.*?),(.*?)/$1-$2/
注意强>
大多数sed实现不支持非贪婪的(.*?)
。您可以切换到支持它的Perl
为您更新
的 intput 强>
abc,c,efh,hj35,"2,6ag=a193",02_TG,",,,,10,,f,,",gf,g,f,,"1720a5",Thgf"18,dhg;_,2,53",0,hg,cj,cj
perl -pe 's/".*?"/"-"/g' your-file
<强>输出强>
abc,c,efh,hj35,"-",02_TG,"-",gf,g,f,,"-",Thgf"-",0,hg,cj,cj
答案 1 :(得分:0)
使用perl:
perl -api -e 's/"[^"]*"/"-"/g' filename