壳 awk 打印范围



我的txt文件构造如下:

random text
random text
random text
start_here
important text
important text
important text
end_here
random text
random text
start_here
important text
important text
important text
end_here
...
start_here
...
end_here
...

我需要在新文件中打印 start_here 和 end_here 之间的所有内容(无论这些行是否在里面)。

我尝试使用 awk,但输出文件为空。

awk '/start_here/,/end_here/' inputfile.txt > outputfile.txt

我的错误在哪里?

这对我来说很好用,但你可以试试:

awk '/start_here/{f=1} f; /end_here/{f=0}' file

awk '/start_here/{f=1} /end_here/{f=0;print} f' file

所有这些都给出了这个:

start_here
important text
important text
important text
end_here
start_here
important text
important text
important text
end_here
start_here
...
end_here

如果您不喜欢开始/结束文本,请使用以下内容:

awk '/end_here/{f=0} f; /start_here/{f=1}' file
important text
important text
important text
important text
important text
important text
...

你的代码应该可以工作我在这里测试过

你也可以使用 Perl:

perl -lne 'print if(/start_here/.../end_here/)'

在这里测试

你的脚本几乎是一个工作sed脚本:

sed -n '/start_here/,/end_here/p' inputfile.txt > outputfile.txt

相关内容

  • 没有找到相关文章

最新更新