假设我有一个这样的句子
FRw3kfdpHKD4Ms2O3hmaEoD4Gqp5onwF/OUkkp5zSVDsYnJ9Bej8f6kRewoZ/WBZuJIKy8qAUmhi
6qLwK063quA4JKE96Ne6bACIcmkj+boWLoE5TsE3zus4Y8vdwhzsT3Hi9qBjjvmE7IV/LILNQizH
ELp8fdbpGBwwRNlncAQ=
我想将括号The quick, (brown, fox) jumps over, the (lazy, old, dog)
中的所有逗号,
替换为冒号()
,但不应替换括号中未包含的逗号。输出应该像
:
请注意,每个句子中都没有修复逗号和括号的数量。 如何使用shell相关工具(bash,sed,awk等)来实现这个结果?
我尝试使用The quick, (brown: fox) jumps over, the (lazy: old: dog)
替换所有匹配的组,但不确定如何将结果插回到原始句子。
答案 0 :(得分:2)
如果您的实际Input_file与显示的输入相同,那么以下内容可能对您有帮助。
awk -F"[)(]" '{for(i=2;i<=NF;i+=2){gsub(/,/,":",$i);$i="("$i")"}} 1' Input_file
输出如下。
The quick, (brown: fox) jumps over, the (lazy: old: dog)