我想使用linux shell来搜索目录中的所有文件,并查看任何文件中的行,这些行的目标模式介于已知的开始模式和结束模式之间。
blah blah
blah blah blah
blah start blah
blah
target
blah blah
end blah
blah
blah
我想回去
blah start blah
blah
target
blah blah
end blah
我试过了
sed -n '/start/,/end/{/target/p}' file.txt
它只搜索一个文件,并且不会显示从开始到结束的整个时间间隔。我使用grep和awk失败了(可能反映了我缺乏经验)。
非常感谢。
1条答案
按热度按时间oxcyiej71#
有不同的方法可以做到这一点。如果不安装一些额外的软件,我建议使用Perl,因为它可能已经安装在您的系统上。
这里。
'-0'命令行开关基本上使perl将整个文本文件作为一行读取(它将行分隔符设置为代码为0的字符,而不是通常的'\n')。
perl使用"-n"开关执行表达式,对于每一行输入使用"-e"开关指定,并且默认情况下不打印结果。
所以,这一行代码的工作原理与下面的伪代码类似: