명령줄의 csv 파일에서 공백 문자가 있는 필드 필터링

명령줄의 csv 파일에서 공백 문자가 있는 필드 필터링

여러 레코드가 포함된 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 -F'\|' -lane 'print if $F[2] !~ /\S/' file

-a필드를 배열로 분할하는 자동 분할 모드를 켭니다. @F
-F'\|'필드 구분 기호를 다음으로 설정합니다. |
$F[2]세 번째 필드는
!~ /\S/공백이 아닌 문자(또는 비어 있음)를 테스트합니다.

관련 정보