根据特定列提取行

mah*_*ima 6 grep sed awk shell-script

我有一个像

CK,ck
XYZ,xyz,xyzs
ABC,abc,abcs
PQR,pqr,pqrs
LMN,lmn,
IJK,ijk,
Run Code Online (Sandbox Code Playgroud)

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

XYZ,xyz,xyzs
ABC,abc,abcs
PQR,pqr,pqrs
Run Code Online (Sandbox Code Playgroud)

cha*_*aos 7

一种sed做法:

sed -n '/[^,]*,[^,]*,[^, ]\+/p' file
Run Code Online (Sandbox Code Playgroud)

或者grep解决办法:

grep -oE '^[^,]*,[^,]*,[^, ]+' file
Run Code Online (Sandbox Code Playgroud)

并且awk

awk -F, '$3 ~ /[^, ]+/' file
Run Code Online (Sandbox Code Playgroud)


小智 3

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

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

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