
我有一個 csv 文件,我需要根據最後一列是否包含單字“ecDNA”將其過濾為兩個文件。我已經有該文件的另外兩個副本可供編輯,而無需更改原始文件。有什麼方法可以從一個檔案中刪除所有不包含「ecDNA」的行,而只保留檔案另一個副本中包含「ecDNA」的行?
答案1
awk -F, '$NF ~ /ecDNA/' oldfile > newfile
NF 是目前輸入行上的欄位(列)數,因此 $NF 是最後一個欄位的值(內容)。如果 $NF 包含“ecDNA”,則列印該行。否則,忽略它。
如果您需要匹配不區分大小寫(並且您使用的是 GNU awk),請使用:
awk -F, -v IGNORECASE=1 '$NF ~ /ecDNA/' oldfile > newfile
對於反向符合(ecDNA
最後一個欄位中沒有的行),否定條件運算子:
awk -F, '$NF !~ /ecDNA/' oldfile > newfile2