复杂(?)Unix文本替换命令

时间:2011-02-14 03:33:52

标签: unix command-line command

命令行相当于什么: 对于其内容中包含“AAA”的每个文件,找到“BBB”并将其替换为“CCC”

因此,该命令将匹配并替换文件中的BBB:

<html>
<head></head>
<body>
AAA
Hello world!
BBB    
</body>
</html>

但不在文件中:

<html>
<head></head>
<body>
Don't match me!
BBB    
</body>
</html>

提前致谢!

2 个答案:

答案 0 :(得分:2)

grep -l AAA file-names | xargs sed -i .bak 's/BBB/CCC/g'这样的东西应该有效。将来,您可能希望在https://serverfault.com/上提出类似的问题。

答案 1 :(得分:0)

使用正面背后也可以做到s/(?<=AAA).*?(BBB)/CCC/g