使用sed命令执行替换操作时出现重复行问题求助
问题根源
你原地替换时犯了个小细节错误:用了/gp修饰符却没加-n参数。sed默认会输出每一行处理后的内容,而/p又会额外打印替换成功的行,两者叠加就导致每行重复输出了。
修复方法
两种方案任选其一就行:
方案1:去掉多余的/p修饰符
直接保留全局替换的/g,去掉打印的/p:
sed -i'.original' -e 's/id: \"\([^\"\/]*\)\/[^\"]*\"/id: \"\1\"/g' example.txt
方案2:保留/p但加上-n参数
-n会关闭sed的默认输出,只让/p打印替换后的结果:
sed -n -i'.original' -e 's/id: \"\([^\"\/]*\)\/[^\"]*\"/id: \"\1\"/gp' example.txt
验证一下,执行完再看文件:
cat example.txt
就能得到正常的输出:
id: "a" id: "e"
内容的提问来源于stack exchange,提问作者OrenIshShalom
相关产品推荐
相关产品推荐

