这是一个简单的问题,我不确定我能否用sed / awk做到这一点 如何对这三行进行sed搜索并用一个确定字符串的行替换?
<Blarg>
<Bllarg>
<Blllarg>
替换为
<test>
我尝试使用sed "s/<Blarg>\n<Bllarg>\n<Blllarg>/<test>/g"
但它似乎没有找到这些行。可能是我的断行符(?)\n
。我错过了什么吗?
答案 0 :(得分:4)
因为sed通常一次只处理一行,所以你的模式永远不会匹配。试试这个:
sed '1N;$!N;s/<Blarg>\n<Bllarg>\n<Blllarg>/<test>/;P;D' filename
答案 1 :(得分:2)
这可能对您有用:
sed '/<Blarg>/ {N;N;s/<Blarg>\n<Bllarg>\n<Blllarg>/<test>/}' <filename>
它的工作原理如下:
<Blarg>
N;N;
<Blarg>\n<Bllarg>\n<Blllarg>
<test>
答案 2 :(得分:0)
您可以将 range addresses 与正则表达式和 c 命令一起使用,它完全符合您的要求:
sed '/<Blarg>/,/<Blllarg>/c<test>' filename