使用sed匹配包含换行符的字符串

我有一个像这样的字符串:

    #

pap

基本上翻译为a \t#\n\tpap,我想将其替换为:

    #

pap

python

转换为\t#\n\tpap\n\tpython

sed很多方法进行了尝试,但是它不起作用可能是因为sed以不同的方式使用了新行。我尝试了:

sed -i "s/\t#\n\tpap/\t#\tpython\n\tpap/" /etc/freeradius/sites-available/default

…以及许多其他方式都没有结果。任何想法在这种情况下如何更换?

回答:

使用gawk尝试以下行:

awk -v RS="\0" -v ORS="" '{gsub(/\t#\n\tpap/,"yourNEwString")}7' file

如果要sed 处理新行,则必须先阅读整个文件:

sed ':a;N;$!ba;s/\t#\n\tpap/NewString/g' file

以上是 使用sed匹配包含换行符的字符串 的全部内容, 来源链接: utcz.com/qa/432057.html

回到顶部