複数のレコードを含む csv ファイルは で区切られます|
。
field1|field2|field3|field4|field5
フィールド 3 が空白か、または「スペース」文字のみが含まれているかどうかを確認します。空白またはスペースの場合は、行全体が表示されます。
答え1
$ echo "1|2||4" | awk -F'|' '$3 ~ /^[ \t]*$/ {print $0}'
1|2||4
$ echo "1|2| |4" | awk -F'|' '$3 ~ /^[ \t]*$/ {print $0}'
1|2| |4
$ echo "1|2| 3|4" | awk -F'|' '$3 ~ /^[ \t]*$/ {print $0}'
答え2
また、cut コマンドを使用して 3 番目のフィールドを抽出し、その値をテストすることもできます。
$ echo "field1|field2|field3|field4|field5" | cut -d '|' -f 3
field3
答え3
私がランダムに試してみたのはgrep
次のようになります:
grep -E '^[^|]*\|[^|]*\| *[^| ]+ *\|' file
答え4
Perl の使用:
perl -F'\|' -lane 'print if $F[2] !~ /\S/' file
-a
自動分割モードをオンにして、フィールドを配列に分割し、@F
-F'\|'
フィールド区切り文字を|
$F[2]
3 番目のフィールドに設定して
!~ /\S/
、スペース以外の文字 (または空) をテストします。