패턴이 포함된 라인 추출

패턴이 포함된 라인 추출

"#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:]]따라서 모든 단일 문자와 일치합니다.아니요공백 또는 탭. 패턴을 ^앞으로 가져오면 패턴이 행의 시작 부분에 고정됩니다.

관련 정보