包含多个记录的 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/
测试非空格字符(或为空)