1 ppxppx 2021-04-10 09:39:02 +08:00 via Android find . -type f | xargs sed -i 's/^aaa.*eee$//g' |
2 sjmcefc2 OP 代码块是不同行的 ^aaa 是开头吧,eee$是结尾。 这样是不是必须要同一行才可以删除呢 |
![]() | 3 hztDbFXEed73dkMf 2021-04-10 09:58:15 +08:00 find . -type f|xargs sed -i.bak '/aaa/,/eee/d' |
![]() | 5 Akiyu 2021-04-10 10:30:21 +08:00 ![]() sed 有多行模式. 你可以参考一下. 那东西不仅麻烦也很少用, 一般你得自己研究. https://www.gnu.org/software/sed/manual/sed.html 重点关注一下. 7.1 Joining lines 我记得之前有用它处理过多行文本处理的问题. 应该是可行的. |
![]() | 6 scinart 2021-04-10 10:56:55 +08:00 sed 从 3 删到 6, see `info sed` 6.3 Multiline techniques seq 9 | sed '/3/{:x; s.6.6.; tn; N; bx; :n; d;}' |
7 Jirajine 2021-04-10 10:59:48 +08:00 via Android 你在这里琢磨 sed 的时间,直接用 Python 已经写好了。 |
8 sjmcefc2 OP python 也可以?大神赐教 |
![]() | 9 kokutou 2021-04-10 11:10:01 +08:00 py 按行读取, 写入到临时文件, 遇到 aaa 就不写了,到了 eee 再继续写.... |
11 sjmcefc2 OP 另外,不如我想在 aaa 和 eee 之间插入一些不同行的代码,该怎么做呢 |
12 sjmcefc2 OP 另外,不如我想在 aaa 和 eee 之间插入一些不同行的代码,该怎么做呢 ----- 用\n 来换行就可以了。 |
![]() | 13 no1xsyzy 2021-04-10 18:51:54 +08:00 基本骨架长这样 #!/usr/bin/env python3 import sys for line in sys.stdin: assert line[-1] in "\r\n" sys.stdout.write(line) chmod +x 或者 python3 a <in.txt >out.txt 然后随意改改就成。 |
![]() | 14 no1xsyzy 2021-04-10 18:56:52 +08:00 (啊,如果最后一行结尾不在第一列是没有 line break 的,忘记那句 assert 吧 |
15 smyle 2021-04-10 23:38:38 +08:00 sed '/aaa/,/eee/d' $文件名 意思就是删除 aaa 到 eee 之间的所有行(正则匹配,包括 aaa 和 eee 本身) 如果要保留 aaa 和 eee 这两行的话 sed '/aaa/,/bbb/{/aaa/!{/bbb/!d}}' $文件名 |