在命令行中用csv文件过滤带空格字符的字段

具有多个logging的csv文件由|分隔 。

 field1|field2|field3|field4|field5 

我想检查,如果field3是空白或只包含“空格”字符。 如果是空白或空格,则应显示整行。

 $ 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}' 

您也可以使用cut命令来提取第三个字段,然后testing值:

 $ echo "field1|field2|field3|field4|field5" | cut -d '|' -f 3 field3 

我使用grep随机尝试将是:

 grep -E '^[^|]*\|[^|]*\| *[^| ]+ *\|' file 

我不确定unix,但在Linux中,你会想使用sed命令。

sed's / || / \ n / g'将会使得如果有空白字段,它会添加一个新行。 不确定如何得到它只检查第三场。 sed's / | | / \ n / g'只能用于空格。

使用Perl:

perl -F'\|' -lane 'print if $F[2] !~ /\S/' file

-a打开autosplit模式,将字段分成数组@F
-F'\|' 将字段分隔符设置为|
$F[2]是第三个字段
!~ /\S/testing非空格字符(或空)