我有一些大型CSV文件,我想要在包含模式'x'的第X行和包含模式'y'的第Y行之间提取所有数据
例如:
other_data
Header
data
data
data
Footer
other_data
我希望能够管理(包括)Header - >之间的所有内容。页脚到新文件。
谢谢!
答案 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