2016-09-29 67 views
0

我是bash的初學者。Bash - 提取關鍵字塊的行數

假設我有一個文本文件sample.txt,其中包含

mercury 
venus 
earth 
mars 
jupiter 
saturn 
uranus 
neptune 
pluto 

和兩個關鍵字earthsaturn

黃金是查找包含關鍵字的行(只有一行包含每個關鍵字),並輸出所有行之間的所有行在之間,包括兩個關鍵字行。

鑑於上述關鍵字earthsaturn和輸入,期望輸出是

earth 
mars 
jupiter 
saturn 

如果可能,避免正則表達式。 有沒有辦法做到這一點?

回答

0

有關更多示例和測試用例,您可能需要訪問Here

awk '/earth/,/saturn/' planets.txt 
    earth 
    mars 
    jupiter 
    saturn 

或者通過sed

sed -n '/earth/,/saturn/p' planets.txt 
earth 
mars 
jupiter 
saturn 
1

您可以使用AWK或sed的:

用awk:

awk '/earth/,/saturn/' sample.txt 

使用SED:

sed -n '/earth/,/saturn/p' sample.txt 
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