在命令列上過濾 csv 檔案中帶有空格字元的字段

在命令列上過濾 csv 檔案中帶有空格字元的字段

包含多筆記錄的 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/

相關內容