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