如何将最后一列中包含某个单词的行编译到单独的文件中?

如何将最后一列中包含某个单词的行编译到单独的文件中?

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

相关内容