我想提取包含这些模式的文件中的所有行:“#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:]]
因此匹配任何单个字符不是空格或制表符。放在^
前面会将图案锚定到行的开头。