首页 > 解决方案 > 寻找删除当前行和前后一行并替换当前行的方法

问题描述

我想用shell脚本来做,后来发现sed是一种有效的方法。我计划在搜索图案线之前和之后使用删除线,然后替换搜索到的图案线

所以使用下面的命令删除前后的行。但是,它会删除之前的行和当前行

sed '$!N;/'perr\(\"pp'/!P;1d;D

任何线索将不胜感激。

标签: linuxunixsed

解决方案


假设您的文件有 Unix 换行符 (\n),请尝试以下操作:

sed '
:a
N
$!ba    # slurp whole lines in the pattern space
s/\(\n\)[^\n]*\nperr("pp[^\n]*\n[^\n]*/\1REPLACEMENT/g
' file

file看起来像:

aaa
bbb
perr("pp..
ccc
ddd

和输出:

aaa
REPLACEMENT
ddd

请根据您的要求修改匹配字符串和替换。


推荐阅读