パターンを含む行の抽出

パターンを含む行の抽出

「#1:」と「ツリーの長さ」パターンを含むファイルのすべての行を抽出したいと思います。

入力する:

#1: nexus0002_Pseudomonas_10M     

 branch          t       N       S   dN/dS      dN      dS  N*dN  S*dS

   6..5      0.000   390.0   195.0  0.0668  0.0000  0.0000   0.0   0.0
   6..7      0.013   390.0   195.0  0.0668  0.0008  0.0114   0.3   2.2
   7..1      0.000   390.0   195.0  0.0668  0.0000  0.0000   0.0   0.0
   7..4      0.000   390.0   195.0  0.0668  0.0000  0.0000   0.0   0.0
   6..8      0.000   390.0   195.0  0.0668  0.0000  0.0000   0.0   0.0
   8..2      0.013   390.0   195.0  0.0668  0.0008  0.0114   0.3   2.2
   8..3      0.013   390.0   195.0  0.0668  0.0008  0.0114   0.3   2.2

tree length for dN:       0.0023
tree length for dS:       0.0341

#1: nexus0003_Pseudomonas_10M     

 branch          t       N       S   dN/dS      dN      dS  N*dN  S*dS

   6..5      0.000   390.0   195.0  0.0668  0.0000  0.0000   0.0   0.0
   6..7      0.013   390.0   195.0  0.0668  0.0008  0.0114   0.3   2.2
   7..1      0.000   390.0   195.0  0.0668  0.0000  0.0000   0.0   0.0
   7..4      0.000   390.0   195.0  0.0668  0.0000  0.0000   0.0   0.0
   6..8      0.000   390.0   195.0  0.0668  0.0000  0.0000   0.0   0.0
   8..2      0.013   390.0   195.0  0.0668  0.0008  0.0114   0.3   2.2
   8..3      0.013   390.0   195.0  0.0668  0.0008  0.0114   0.3   2.2

tree length for dN:       0.0111
tree length for dS:       0.0444

出力:

#1: nexus0002_Pseudomonas_10M     

tree length for dN:       0.0023
tree length for dS:       0.0341

#1: nexus0003_Pseudomonas_10M

tree length for dN:       0.0111
tree length for dS:       0.0444

シンプルなsedソリューションはありますか?

答え1

使用grep

grep -E "^#1:|tree length for" infile.txt 

またはsed

sed -n '/^#1:/p;/^tree length for/p' infile.txt 

答え2

提供されたデータによると、空白ではなく文字で始まるすべての行を取得したいようです。

$ grep '^[^[:blank:]]' file.in
#1: nexus0002_Pseudomonas_10M   
tree length for dN:       0.0023
tree length for dS:       0.0341
#1: nexus0003_Pseudomonas_10M   
tree length for dN:       0.0111
tree length for dS:       0.0444

そしてsed

$ sed -n '/^[^[:blank:]]/p' file.in

とでは、grep単一のスペースまたはタブが一致sedします[[:blank:]][^[:blank:]]したがって、すべての単一文字に一致します。いいえスペースまたはタブ。パターンを^前方にインポートすると、パターンは行の先頭に固定されます。

関連情報