내 파일에 다음 줄이 있습니다 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