我想到了使用 shell 脚本来实现,后来发现 sed 是一种高效的实现方式。我计划在搜索图案线之前和之后删除线,然后替换搜索到的图案线
于是用下面的命令删除了前后的行。但是,它会删除之前的行和当前行
sed '$!N;/'perr\(\"pp'/!P;1d;D
任何线索将不胜感激。
最佳答案
假设您的文件有 Unix 换行符 (\n),请尝试以下操作:
sed '
:a
N
$!ba # slurp whole lines in the pattern space
s/\(\n\)[^\n]*\nperr("pp[^\n]*\n[^\n]*/\1REPLACEMENT/g
' file
文件
看起来像:
aaa
bbb
perr("pp..
ccc
ddd
和输出:
aaa
REPLACEMENT
ddd
请根据修改匹配字符串和替换 您的要求。
关于linux - 寻找删除当前行和前后一行并替换当前行的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54687731/