Sed / Awk - 在模式x和y之间拉线

时间:2013-04-02 16:32:59

标签: bash sed awk

我有一些大型CSV文件,我想要在包含模式'x'的第X行和包含模式'y'的第Y行之间提取所有数据

例如:

other_data
Header
data
data
data
Footer
other_data

我希望能够管理(包括)Header - >之间的所有内容。页脚到新文件。

谢谢!

4 个答案:

答案 0 :(得分:17)

使用awk非常简单:

awk '/Header/ { show=1 } show; /Footer/ { show=0 }'

基本上将状态保存在名为show的变量中。当我们点击Header时我们将其打开,Footer我们将其关闭。当它打开时,show规则执行打印记录的默认操作。

答案 1 :(得分:16)

在sed中非常简单:

sed -n '/Header/,/Footer/p'

sed '/Header/,/Footer/!d'

答案 2 :(得分:10)

awk的另一种方式:

awk '/Header/,/Footer/' file
Header
data
data
data
Footer

只需将输出重定向以保存在新文件中:

awk '/Header/,/Footer/' file > newfile

答案 3 :(得分:1)

这可能适合你(GNU sed):

 sed '/^Header/,/^Footer/w new_file' file