根据特定列提取行

根据特定列提取行

我有一个 CSV 文件,例如

CK,ck
XYZ,xyz,xyzs
ABC,abc,abcs
PQR,pqr,pqrs
LMN,lmn,
IJK,ijk,

我必须检查第 3 列中是否写了除空格之外的内容,然后显示整行。输出将是:

XYZ,xyz,xyzs
ABC,abc,abcs
PQR,pqr,pqrs

答案1

一种sed方法:

sed -n '/[^,]*,[^,]*,[^, ]\+/p' file

或者grep解决方案:

grep -oE '^[^,]*,[^,]*,[^, ]+' file

awk

awk -F, '$3 ~ /[^, ]+/' file

答案2

尝试:

$ awk -F, '$3 && $3 != " "' file
XYZ,xyz,xyzs
ABC,abc,abcs
PQR,pqr,pqrs

或者:

$ awk -F, '$3 ~ /[^[:blank:]]/' file

答案3

你可以在 awk 中做这样的事情:

awk -F',' '{gsub(/[ \t]+$/,"",$3)}$3' foo.csv

这将删除尾随空格,并且仅在第三个字段中剩余内容时才打印。

答案4

使用 GNU awk

awk -F, '$3' input_file

相关内容