这是一个简单的问题,我不确定我是否能够使用 sed/awk 来做到这一点 我怎样才能让 sed 搜索这 3 行并替换为具有确定字符串的行?
<Blarg>
<Bllarg>
<Blllarg>
用。。。来代替
<test>
我尝试使用 sed"s/<Blarg>\n<Bllarg>\n<Blllarg>/<test>/g"
但它似乎没有找到这些行。可能是我的换行符 (?) \n
。我错过了什么吗?
这是一个简单的问题,我不确定我是否能够使用 sed/awk 来做到这一点 我怎样才能让 sed 搜索这 3 行并替换为具有确定字符串的行?
<Blarg>
<Bllarg>
<Blllarg>
用。。。来代替
<test>
我尝试使用 sed"s/<Blarg>\n<Bllarg>\n<Blllarg>/<test>/g"
但它似乎没有找到这些行。可能是我的换行符 (?) \n
。我错过了什么吗?
因为 sed 通常一次只处理一行,所以您的模式永远不会匹配。试试这个:
sed '1N;$!N;s/<Blarg>\n<Bllarg>\n<Blllarg>/<test>/;P;D' filename
这可能对您有用:
sed '/<Blarg>/ {N;N;s/<Blarg>\n<Bllarg>\n<Blllarg>/<test>/}' <filename>
它的工作原理如下:
<Blarg>
找到N;N;
<Blarg>\n<Bllarg>\n<Blllarg>
<test>
You can use range addresses with regular expressions an the c command, which does exactly what you are asking for:
sed '/<Blarg>/,/<Blllarg>/c<test>' filename