最後の列の特定の単語を含む行を別々のファイルにコンパイルするにはどうすればよいですか?

最後の列の特定の単語を含む行を別々のファイルにコンパイルするにはどうすればよいですか?

最後の列に「ecDNA」という単語が含まれているかどうかに応じて、2つのファイルでフィルタリングする必要があるcsvファイルがあります。元のファイルを変更せずに編集できるファイルのコピーはすでに2つあります。あるファイルから「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

おすすめ記事