다음과 같이 탭으로 구분된 큰 텍스트 파일이 있습니다.
#CHR POS REF ALT EFC GOM
1 100 A G u_v(XXXXXX);i_v(XXXXXXX) 0
2 465 T C d_r(XXXXXX);i_r(XXXXXXXX) 1
9 600 T G d_i(XXXXXX);f_v(XXXXXXXX) -
다음 줄을 삭제하고 싶습니다
(1) "EFC" 열의 내용에 "i_r" 또는 "u_v"("(XXXXXX)" 및 기타 내용 포함)가 포함되어 있습니다.
또는
(2) "GOM" 열의 값은 1입니다.
그렇다면 awk 또는 sed를 사용하여 원하는 파일을 얻는 방법은 무엇입니까?
답변1
awk로 직접 번역:
awk -F'\t' '!($5 ~ /i_r/ || $5 ~ /u_v/ || $6 == 1) { print; }' input
- 필드 구분 기호를 탭으로 설정
\t
- 다음 조건이 충족되는 경우아니요진짜
!( ... )
- 조건 1: 필드 5에
i_r
또는이 포함됩니다. - 조건 2: 필드 5에
u_v
또는이 포함됩니다. - 조건 3: 필드 6이
1
이면 print
철사
기준과 일치하는 행은 인쇄되지 않습니다("삭제").
예제 출력:
#CHR POS REF ALT EFC GOM
9 600 T G d_i(XXXXXX);f_v(XXXXXXXX) -