CSVファイルの5番目のフィールドが空であることを確認する必要があります。これは私のファイルです:
1,abc,543,87,DATA,fsg;
1,abc,543,87,,fsg;
1,abc,543,87,DATA,fsg;
1,abc,543,88,,fsg;
1,abc,543,,DATA,fsg;
ご覧のとおり、2行目と4行目には5番目のフィールドが空です。この行をすべて印刷したいです。
結果は次のようになります。
1,abc,543,87,,fsg;
1,abc,543,87,,fsg;
答え1
その他awk
:
$ awk -F, '!length($5)' file
1,abc,543,87,,fsg;
1,abc,543,88,,fsg;
答え2
オプションを使用して別のフィールド区切り文字(デフォルトは空白)を使用してから、5番目の列が空である-F
ことを確認できます。
awk -F',' '{if($5==""){print $0}' myfile
またはもっと簡潔に言えば:
awk -F, '$5==""' myfile
-
sed コマンドを使用します。
sed -n '/,,[^,]*$/p' myfile
-n
一致しない限り()を印刷しないでください。/,,[^,]*$/
つまり、(5番目のフィールドは空です)+ 6番目のフィールドは(=カンマ以外のすべての項目)...$
で終わります。フィールドが6つを超えると、コマンドは期待どおりに機能しません。,,
,
[^,]
答え3
簡単なものでawk
十分です。
awk -F, '$5==""' your_file
説明する
,
フィールド区切り文字が(-F ,
)に設定されています。- 基本的な作業は、
awk
現在のレコードを印刷することです。 5番目のフィールドが空の場合にのみこれが発生することを確認してください($5 == ""
)。
答え4
awk
次のコマンドを使用できます。
$ awk '/^(.*,){4},.*/' filename
1,abc,543,87,,fsg;
1,abc,543,88,,fsg;
正規表現はランダムな文字の後に,
4回来、次の文字は別の文字,
(5番目の空白フィールド)でなければならず、その後に何も来るべきかどうかをテストします。