使用sed删除行直到文件结尾

时间:2011-06-26 04:01:37

标签: linux bash sed

我正在使用sed -n '/[test1]/,/[test2]/{/[test2]/!p}' test.txt > temp.txt ..如果我只想要顶部选择,那么效果很好。但我在底部之后。

[test1]
A
B
C
[test2]
1
2
3

但是我在[test2]之后,所以复制[test2]直到行结束。所以产生这样的输出,

[test2]
1
2
3

2 个答案:

答案 0 :(得分:6)

尝试此命令:

sed -n  '/\(^\[test2\]\)/,$p' test.txt > temp.txt

修改

使用扩展正则表达式标志(-r),

 sed -n -r '/(^\[test2\])/,$p' test.txt > temp.txt

答案 1 :(得分:1)

是的,grep -n将输出行号并匹配,并处理它我想出了以下

 grep -n '\[test2\]' temp.txt | awk -F\: '{print "sed \"1,"$1-1"d;\" temp.txt"}' | bash > test.txt

所以新文件的cat产生以下内容:

 cat test.txt
 [test2]
 1
 2
 3

btw,| bash 将带有awk的格式化命令行重定向到bash以执行它们