특정 열 값을 기반으로 단순화된 csv 파일에서 행 제거(행당 하나의 줄 바꿈)

특정 열 값을 기반으로 단순화된 csv 파일에서 행 제거(행당 하나의 줄 바꿈)

Interaction_ID, PDB_ID, First_Residue, First_Chain, Second_Residue, Third_Residue, Third_Chain 및 Pattern 헤더가 포함된 csv 파일이 있습니다.

AM_AUTO_1,1cx0,A166,B,C118,B,G129,B,A-minor Type I ACG                            
AM_AUTO_2,1cx0,A165,B,C119,B,G128,B,A-minor Type II ACG                           
AM_AUTO_3,1cx0,A166,B,C119,B,G128,B,A-minor Type II ACG                           
AM_AUTO_4,1ddy,A25,A,C21,A,G8,A,A-minor Type I ACG                            
AM_AUTO_5,1e7k,A33,C,C28,C,G45,C,A-minor Type 0 AGC                            
AM_AUTO_6,1e7k,A33,D,C28,D,G45,D,A-minor Type 0 AAU

내가 원하는 것은 csv 파일에서 Pattern = %Type 0% 행을 삭제한 다음 결과 csv 파일을 인쇄하는 것입니다. 결과는 다음과 같아야 합니다.

AM_AUTO_1,1cx0,A166,B,C118,B,G129,B,A-minor Type I ACG                            
AM_AUTO_2,1cx0,A165,B,C119,B,G128,B,A-minor Type II ACG                           
AM_AUTO_3,1cx0,A166,B,C119,B,G128,B,A-minor Type II ACG                           
AM_AUTO_4,1ddy,A25,A,C21,A,G8,A,A-minor Type I ACG  

이 작업을 수행하려면 어떻게 awk를 사용합니까?

답변1

를 사용하면 awk다음을 수행할 수 있습니다.

$ awk '$(NF-1)!=0' file
AM_AUTO_1,1cx0,A166,B,C118,B,G129,B,A-minor Type I ACG
AM_AUTO_2,1cx0,A165,B,C119,B,G128,B,A-minor Type II ACG
AM_AUTO_3,1cx0,A166,B,C119,B,G128,B,A-minor Type II ACG
AM_AUTO_4,1ddy,A25,A,C21,A,G8,A,A-minor Type I ACG

또는 다음을 사용하십시오 grep.

grep -v 'Type 0' file

답변2

사용 awk:

awk -F, '$9!~/Type 0/{print $0}' file
AM_AUTO_1,1cx0,A166,B,C118,B,G129,B,A-minor Type I ACG
AM_AUTO_2,1cx0,A165,B,C119,B,G128,B,A-minor Type II ACG
AM_AUTO_3,1cx0,A166,B,C119,B,G128,B,A-minor Type II ACG
AM_AUTO_4,1ddy,A25,A,C21,A,G8,A,A-minor Type I ACG

설명하다:

이로 인해 ( )가 구분 기호로 awk사용 됩니다 . 9번째 필드에 "유형 0"( )이 포함되어 있지 않으면 해당 행( )을 인쇄합니다.,-F,$9!~/Type 0/{print $0}

해결책은 다음 과 같습니다 sed.

sed '/,[^,]*Type 0[^,]*$/d' file

관련 정보