如何將最後一列包含某個單字的行編譯到單獨的檔案中?

如何將最後一列包含某個單字的行編譯到單獨的檔案中?

我有一個 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

相關內容