有一个输入文件,其中包含制表符分隔的列。
我们需要删除第四列和第十一列中包含“NA”的行。
问题:我们如何在 awk 中做到这一点?
答案1
awk -F"\t" '$4 != "NA" || $11 != "NA"' filename
请注意,awk 不会就地编辑文件。如果要将更改保存回文件,则:
tmp=$(mktemp)
awk -F"\t" '...' filename > "$tmp" && mv "$tmp" filename
答案2
您告诉awk
打印不符合您标准的行。
BEGIN { FS="\t" }
$4 != "NA" || $11 != "NA"
这是布尔逻辑的逆过程,其中~a|~b == a&b
.