我是bash的初学者。
假设我有一个文本文件sample.txt
,其中包含
mercury
venus
earth
mars
jupiter
saturn
uranus
neptune
pluto
以及两个关键字earth
和saturn
。
黄金是找到包含关键字的行(只有一行包含每个关键字),并输出中间的所有行,包括两个关键字行。
鉴于上述关键字earth
,saturn
和输入,预期输出为
earth
mars
jupiter
saturn
如果可能,请避免正则表达式。 反正有吗?
答案 0 :(得分:1)
您可以使用awk或sed:
使用awk:
awk '/earth/,/saturn/' sample.txt
使用sed:
sed -n '/earth/,/saturn/p' sample.txt
答案 1 :(得分:0)
您可以访问Here以获取更多示例和测试用例。
awk '/earth/,/saturn/' planets.txt
earth
mars
jupiter
saturn
或sed
sed -n '/earth/,/saturn/p' planets.txt
earth
mars
jupiter
saturn
答案 2 :(得分:0)
perl -lne 'print if(/earth/.../saturn/)' planets.txt
仅在两个关键字都存在时才获取数据的另一种解决方案。
perl -lne '$f=1 if(/earth/);
push @a,$_ if($f==1);
if(/saturn/){print join "\n",@a;undef @a;$f=0}'
planets.txt