我的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