AWK에서 tsv 파일의 다중 교체 [REFACTOR]

AWK에서 tsv 파일의 다중 교체 [REFACTOR]

내 파일에 다음 줄이 있습니다 file.sh.

awk '$2 != "$ID1$"' myfile2.tsv > output && mv output myfile3.tsv
awk '$2 != "$ID2$"' myfile3.tsv > output && mv output myfile3.tsv
awk '$2 != "$ID3$"' myfile3.tsv > output && mv output myfile3.tsv
awk '$2 != "$ID4$"' myfile3.tsv > output && mv output myfile3.tsv
awk '$2 != "$ID5$"' myfile3.tsv > output && mv output myfile3.tsv
awk '$2 != "$ID6$"' myfile3.tsv > output && mv output myfile3.tsv
awk '$2 != "$ID7$"' myfile3.tsv > output && mv output myfile3.tsv
awk '$2 != "$ID8$"' myfile3.tsv > output && mv output myfile3.tsv
awk '$2 != "$ID9$"' myfile3.tsv > output && mv output myfile4.tsv
...

이것은 매력적으로 작동하지만 몇 개의 행(+600)이 있으므로 다음과 같이 보이도록 리팩터링해야 합니다.

awk '$2 != "$ID1$", $2 != "$ID2$", $2 != "$ID3$" ...' myfile3.tsv > output && mv output myfile3.tsv

모든 것을 시도했지만 올바른 구문의 키를 찾을 수 없습니다.

미리 감사드립니다.

ベストアンサー1

원하는 것을 달성하는 한 가지 방법은 다음과 같습니다. 필요한 수의 매개변수를 얻으려면 lim 변수를 입력합니다.

awk -F '\t' -v lim=9 '
  BEGIN {
    OFS = FS
    for (i=1; i<=lim; i++) a["$ID"  i "$"]
  }
  $2 in a {next}
1'  yourfile.tsv

おすすめ記事