在控制台sed / a编辑中显示

时间:2018-04-10 14:49:33

标签: bash sed

进行替换时,这有效:

sed -i "s/yes/no/w /dev/stdout" myfile

如果发生任何替换,则仅显示已修改的字符串。 但是我希望用/ a获得相同的报告,但我无法找到方法:

sed -i "/yes/a\hello w /dev/stdout" myfile

它只是在'你好w / dev / stdout'中添加一个新行。到文件...我尝试使用\ w的其他一些变体,但它只是附加我在那里添加的所有内容。

是否可以完成,/报告是否匹配?

顺便说一句,/ a似乎没有采取任何参数,例如我如何将其设为全局?

我想我可以使用s /并将匹配替换为自己加上新行......但这感觉就像一个丑陋的解决方法。

1 个答案:

答案 0 :(得分:1)

看看这是否有效,我在Number.parseInt(Math.floor(Math.random() * 100)) 上进行了测试,不确定语法是否适用于其他版本

GNU sed
  • $ seq 3 > ip.txt $ sed -i -e '/2/{a\hello' -e 'w /dev/stdout' -e '}' ip.txt 2 $ cat ip.txt 1 2 hello 3 可用于对要执行特定地址的命令进行分组
  • 多个{}允许在单行中组合多行命令

没有-e

-e