「#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:]]
したがって、すべての単一文字に一致します。いいえスペースまたはタブ。パターンを^
前方にインポートすると、パターンは行の先頭に固定されます。