awk 명령 뒤에 제목을 다시 넣습니다.

awk 명령 뒤에 제목을 다시 넣습니다.

이런 파일이 있습니다. sam 파일이라고 해요

@HD VN:1.0  SO:unsorted
@SQ SN:RNU2-1   LN:388
@SQ SN:RNU6-1100P   LN:304
SRR959756.23    0   RNU2-1  56  0   6S32M12S    *   0   0   CACAGCAATATCTGATACGTCCTCTATCCGAGGACAATTGGAATTCTCGG  hhhhhhhhhhhhhhhhhhhhhhghhghhhhhhhhhhhhhhfhhhhhhghf  AS:i:64 XS:i:64 XN:i:0  XM:i:0  XO:i:0  XG:i:0  NM:i:0  MD:Z:32 YT:Z:UU
SRR959756.23    256 RNU2-2P 56  0   6S32M12S    *   0   0   CACAGCAATATCTGATACGTCCTCTATCCGAGGACAATTGGAATTCTCGG  *   AS:i:64 XS:i:64 XN:i:0  XM:i:0  XO:i:0  XG:i:0  NM:i:0  MD:Z:32 YT:Z:UU
SRR959756.23    256 RNU2-6P 55  0   6S32M12S    *   0   0   CACAGCAATATCTGATACGTCCTCTATCCGAGGACAATTGGAATTCTCGG  *   AS:i:56 XS:i:64 XN:i:0  XM:i:4  XO:i:0  XG:i:0  NM:i:1  MD:Z:11T20  YT:Z:UU

XM인 15열의 파일을 필터링하고 싶어서 이렇게 썼습니다.

awk '$15 ~ /^XM:i:0/ || $15 ~ /^XM:i:1/ || $15 ~ /^XM:i:2/ || $15 ~ /^XM:i:3/ {print $0}' file.txt

이거 하다가 잃어버렸어요@(처음 세 줄). 출력에 있는 그대로 유지하려면 어떻게 해야 합니까?

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

@HD VN:1.0  SO:unsorted
@SQ SN:RNU2-1   LN:388
@SQ SN:RNU6-1100P   LN:304
SRR959756.23    0   RNU2-1  56  0   6S32M12S    *   0   0   CACAGCAATATCTGATACGTCCTCTATCCGAGGACAATTGGAATTCTCGG  hhhhhhhhhhhhhhhhhhhhhhghhghhhhhhhhhhhhhhfhhhhhhghf  AS:i:64 XS:i:64 XN:i:0  XM:i:0  XO:i:0  XG:i:0  NM:i:0  MD:Z:32 YT:Z:UU
SRR959756.23    256 RNU2-2P 56  0   6S32M12S    *   0   0   CACAGCAATATCTGATACGTCCTCTATCCGAGGACAATTGGAATTCTCGG  *   AS:i:64 XS:i:64 XN:i:0  XM:i:0  XO:i:0  XG:i:0  NM:i:0  MD:Z:32 YT:Z:UU

수백 개와 같이 더 많은 헤더 줄(@로 시작)이 있을 수도 있습니다. 처음 3줄만 사용했습니다.

답변1

나는 이것을 시도했고 작동한다

awk '$0 ~ /^@/ || $15 ~ /^XM:i:0/ || $15 ~ /^XM:i:1/ || $15 ~ /^XM:i:2/ || $15 ~ /^XM:i:3/ {print $0}' file.txt

관련 정보