我有一些数据类似
1:Alice 2313
2:Desctop 456
3:Cook 111
4:.filename 50
...
...
100:Good 3
Dir num:10
File num:90
...
...
我要删除特定行(例如第3行)中的所有行,直到显示“目录号:”行为止。 想法输出应该是(根据上面的示例):
1:Alice 2313
2:Desctop 456
Dir num:10
File num:90
...
...
我有Google的几种解决方案,例如sed -i '/somestring/,$!d' file
。
但是这些解决方案不适合,因为删除行有特定的行。
如何在没有任何tmp文件的情况下用1命令执行此操作? 原谅我的英语不好,我不是英语母语人士。
答案 0 :(得分:0)
您需要指定地址范围,从指定的行号(3
)到与模式匹配的行(/Dir num/
)。但是,它并不像
sed '3,/Dir num/ d' file
因为这将删除“目录号”行。尝试以下方法:
sed '3,/Dir num/ {/Dir num/! d}' file
对于范围中的行,将检查该行是否不匹配与模式匹配:如果该模式不匹配,请将其删除。
答案 1 :(得分:0)
使用range: /pattern1/,/pattern2/
的{{1}}选项
sed