(Sed awk grep을 사용하는 EC)로 끝나지 않는 모든 항목 삭제

(Sed awk grep을 사용하는 EC)로 끝나지 않는 모든 항목 삭제

이와 같은 파일이 있는데 파일에서 EC 번호를 가져오고 싶습니다.

5'-nucleotidase SurE (EC 3.1.3.5)
L-aspartate oxidase (EC 1.4.3.16)
Nicotinamide-nucleotide adenylyltransferase, NadM family (EC 2.7.7.1) @ Nicotinate-nucleotide adenylyltransferase, NadM family (EC 2.7.7.18)
Nicotinamidase (EC 3.5.1.19)
Quinolinate phosphoribosyltransferase [decarboxylating] 
NAD synthetase (EC 6.3.1.5) / Glutamine amidotransferase chain of NAD synthetase
4'-phosphopantetheinyl transferase (EC 2.7.8.-)

출력은 다음과 같아야 합니다.

(EC 3.1.3.5)
(EC 1.4.3.16)
(EC 2.7.7.1)
(EC 2.7.7.18)
(EC 3.5.1.19)    
(EC 6.3.1.5)    
(EC 2.7.8.-)

답변1

간단하게grep:

grep -o '(EC [^)]*)' file
  • [^)]*- 오른쪽 괄호를 제외한 모든 문자와 일치)

산출:

(EC 3.1.3.5)
(EC 1.4.3.16)
(EC 2.7.7.1)
(EC 2.7.7.18)
(EC 3.5.1.19)
(EC 6.3.1.5)
(EC 2.7.8.-)

답변2

sed -n 's/^\(.*\)\((EC[^)]*)\).*$/\2/p'

그리고 awk흥미로운 버전:

awk -F'\\(EC|\\)' 'NF==3 { print "(EC" $2 ")" }'

관련 정보