例如
~cat ./temp
1,2,"3,1,2",4,5,"A,2,Csd",xx,a,"s,s,,",,,
在shell解析之后,我想要这个输出:
~parse.sh ./temp
1,2,"3_1_2",4,5,"A_2_Csd",xx,a,"s_s__",,,
即。将CCD_ 3范围内的所有CCD_ 1替换为CCD_。
任何shell解决方案都是受欢迎的,awk/sed/perl/其他你能想到的聪明的东西。
代码段越短越好
您可以使用这个perl命令行,将逗号音译为每个匹配的下划线:
perl -pe's#"[^"]*"#$&=~y/,/_/r#ge' ./temp
$&
完全匹配
y///
是音译运算符(也可以写成tr///
(
CCD_ 7修饰符返回一个结果字符串(而不是被替换的字符数(。
CCD_ 8修饰符允许以替换模式执行代码。