특정 열을 기반으로 행 추출

특정 열을 기반으로 행 추출

다음과 같은 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

관련 정보