여러 레코드가 포함된 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/
공백이 아닌 문자(또는 비어 있음)를 테스트합니다.