linux - 寻找删除当前行和前后一行并替换当前行的方法

标签 linux unix sed

我想到了使用 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/

相关文章:

linux - 通过 shebang 线路链接解释器是否可移植?

linux - lftp 通过 sftp,上传时找不到文件错误

linux - 查找名称包含 "AC"的文件和名称以 "RES"开头的文件列表

Linux "top": how to tell which process is what?

bash - wget并行下载文件并重命名

linux - Bash + 从行中删除空格

linux - 如何使用 Linux CLI 查找一行代码并仅从某个/目录中的所有文件中删除该行

来自 NASM 代码的 Linux64 线程本地存储 (TLS) 数据

sed - sed-用一个命令替换两个字符中的任何一个

Shell:Sed -i.bak 通过附加当前日期来重命名文件