Sed替换;与|但忽略;内部报价

时间:2017-11-14 16:54:41

标签: sed replace

我想用;替换文件中的|,但忽略双引号内的分号。我想使用sed -I选项

对同一文件执行操作

输入:1;2;"3;4;5"

预期输出:1|2|"3;4;5

1 个答案:

答案 0 :(得分:0)

GNU AWK 解决方案:

示例input.txt文件:

1;2;"3;4;5"
6;"7;8;9";10

工作:

awk -v FPAT='[^;]+|"[^"]+"' '{ for(i=1;i<=NF;i++) printf "%s%s",$i,(i==NF? ORS:OFS) }' OFS='|' input.txt

输出:

1|2|"3;4;5"
6|"7;8;9"|10