进行替换时,这有效:
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 /并将匹配替换为自己加上新行......但这感觉就像一个丑陋的解决方法。
答案 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