linux - 寻找删除当前行和前后一行并替换当前行的方法
问题描述
我想用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
file
看起来像:
aaa
bbb
perr("pp..
ccc
ddd
和输出:
aaa
REPLACEMENT
ddd
请根据您的要求修改匹配字符串和替换。
推荐阅读
- c++ - 将大对象存储在 unordered_map 中是否效率低下?
- google-apps-script - 发送空白副本的 Google 表单
- jpa - Spring数据JPA抛出java.lang.ArrayIndexOutOfBoundsException:X [Kotlin]
- clojure - Convert a lazy sequence of maps into a single map
- javafx - 如果您检查它的状态然后添加一个监听器,是否有可能错过一个事件?
- mysql - MySQL 5.7.28 上 QUERY 非常基本的错误
- lit-element - 添加和删除活动类
- javascript - JS 从一组 URL 中创建树
- cassandra - 对 CAP 定理感到困惑
- django - Django Admin:自定义表单以在表单顶部添加链接