我正在使用sed -n '/[test1]/,/[test2]/{/[test2]/!p}' test.txt > temp.txt
..如果我只想要顶部选择,那么效果很好。但我在底部之后。
[test1]
A
B
C
[test2]
1
2
3
但是我在[test2]之后,所以复制[test2]直到行结束。所以产生这样的输出,
[test2]
1
2
3
答案 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
以执行它们