如题:
aaa
123
123
123
123
123
eee
需求 是删除 aaa 开头 到 eee 结尾的代码块,
这样需要如何写呢?
aaa
123
123
123
123
123
eee
需求 是删除 aaa 开头 到 eee 结尾的代码块,
这样需要如何写呢?
|
ppxppxApr 10, 2021 via Android
1
find . -type f | xargs sed -i 's/^aaa.*eee$//g'
|
|
2
代码块是不同行的
^aaa 是开头吧,eee$是结尾。 这样是不是必须要同一行才可以删除呢 |
|
hztDbFXEed73dkMfApr 10, 2021
3
find . -type f|xargs sed -i.bak '/aaa/,/eee/d'
|
|
66Zi2nJk5Z6mdtzjApr 10, 2021 via iPhone
4
@sjmcefc2 sed 可以匹配行的方式来匹配起始行号,然后操作这个行范围之内的
|
|
5
sed 有多行模式. 你可以参考一下.
那东西不仅麻烦也很少用, 一般你得自己研究. https://www.gnu.org/software/sed/manual/sed.html 重点关注一下. 7.1 Joining lines 我记得之前有用它处理过多行文本处理的问题. 应该是可行的. |
|
scinartApr 10, 2021
6
sed 从 3 删到 6, see `info sed` 6.3 Multiline techniques
seq 9 | sed '/3/{:x; s.6.6.; tn; N; bx; :n; d;}' |
|
JirajineApr 10, 2021 via Android
7
你在这里琢磨 sed 的时间,直接用 Python 已经写好了。
|
|
8
python 也可以?大神赐教
|
|
kokutouApr 10, 2021
9
py 按行读取, 写入到临时文件, 遇到 aaa 就不写了,到了 eee 再继续写....
|
|
11
另外,不如我想在 aaa 和 eee 之间插入一些不同行的代码,该怎么做呢
|
|
12
另外,不如我想在 aaa 和 eee 之间插入一些不同行的代码,该怎么做呢
----- 用\n 来换行就可以了。 |
|
no1xsyzyApr 10, 2021
13
基本骨架长这样
#!/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 然后随意改改就成。 |
|
no1xsyzyApr 10, 2021
14
(啊,如果最后一行结尾不在第一列是没有 line break 的,忘记那句 assert 吧
|
|
smyleApr 10, 2021
15
sed '/aaa/,/eee/d' $文件名
意思就是删除 aaa 到 eee 之间的所有行(正则匹配,包括 aaa 和 eee 本身) 如果要保留 aaa 和 eee 这两行的话 sed '/aaa/,/bbb/{/aaa/!{/bbb/!d}}' $文件名 |