我有一些大型 CSV 文件,我想在其中提取包含模式“x”的 X 行和包含模式“y”的 Y 行之间的所有数据
例如:
other_data
Header
data
data
data
Footer
other_data
我希望能够将(包括)Header -> Footer 之间的所有内容通过管道传输到一个新文件。
谢谢!
使用awk
它非常简单:
awk '/Header/ { show=1 } show; /Footer/ { show=0 }'
基本上将状态保存在一个名为show
. 当我们点击页眉时,我们将其打开,页脚我们将其关闭。当它打开时,该show
规则会执行打印记录的默认操作。
在 sed 中非常简单:
sed -n '/Header/,/Footer/p'
或者
sed '/Header/,/Footer/!d'
另一种方式awk
:
awk '/Header/,/Footer/' file
Header
data
data
data
Footer
只需重定向输出以保存在新文件中:
awk '/Header/,/Footer/' file > newfile
这可能对您有用(GNU sed):
sed '/^Header/,/^Footer/w new_file' file