![如何將最後一列包含某個單字的行編譯到單獨的檔案中?](https://rvso.com/image/192216/%E5%A6%82%E4%BD%95%E5%B0%87%E6%9C%80%E5%BE%8C%E4%B8%80%E5%88%97%E5%8C%85%E5%90%AB%E6%9F%90%E5%80%8B%E5%96%AE%E5%AD%97%E7%9A%84%E8%A1%8C%E7%B7%A8%E8%AD%AF%E5%88%B0%E5%96%AE%E7%8D%A8%E7%9A%84%E6%AA%94%E6%A1%88%E4%B8%AD%EF%BC%9F.png)
我有一個 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