【发布时间】:2020-06-12 19:22:43
【问题描述】:
我只想删除 PATTERN1(aaa) 和 PATTERN2(ccc) 之间的行,不包括模式匹配的其他行。
我试图删除 PATTERN1(aaa) 和 PATTERN2(ccc) 之间的空行,在我的示例中为第 8 行...此行将不会始终位于同一位置,这就是我尝试删除的原因它使用 2 种模式。
基本上归结为:“如果在 aaa 和 ccc 之间找到一个空行,则将其删除...
输入文件
aaa 409
bbb 201
122 0.98
aaa 1.47
aaa 0.00
aaa 0.00
ccc 0.00
121 0.01
135 1.99
输出文件
aaa 409
bbb 201
122 0.98
aaa 1.47
aaa 0.00
aaa 0.00
ccc 0.00
121 0.01
135 1.99
尝试
sed '/aaa/,/ccc/{//p;d;}' file
sed '/aaa/,/ccc/{//!d}' file
awk '/aaa/{g=1;next}/ccc/{g=0;next}g' file
提前谢谢你。
【问题讨论】:
-
试着用另一种方式说出你想做什么,这样像 /me 这样愚蠢的人就能明白你想做什么...... ????
-
您已经知道 sed 不是解决此问题的正确工具,并且您使用 awk 得到了许多类似问题的答案,所以为什么还要发布 sed 尝试。
-
不清楚为什么您不想删除第 3 行。 is也在
aaa和ccc之间,也是空的? -
但是第1行使用的是
aaa,第9行使用的是ccc,第3行是空行...... -
这是一个棘手的问题。基本上它归结为:“如果在
aaa和ccc之间找到一个空行,则将其删除。不要删除模式aaa和aaa之间的空行”
标签: awk