用regexp替换特定作用域中的特定字符/字符串



例如

~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修饰符允许以替换模式执行代码。

最新更新