包含多筆記錄的 csv 檔案以|
.
field1|field2|field3|field4|field5
我想檢查 field3 是否為空或僅包含“空格”字元。如果它是空白或空格,則應顯示整行。
答案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 命令拉出第三個字段,然後測試該值:
$ 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]
第三個欄位測試
!~ /\S/