CSV 파일의 다섯 번째 필드가 비어 있는지 확인해야 합니다. 이것은 내 파일입니다:
1,abc,543,87,DATA,fsg;
1,abc,543,87,,fsg;
1,abc,543,87,DATA,fsg;
1,abc,543,88,,fsg;
1,abc,543,,DATA,fsg;
보시다시피 두 번째와 네 번째 행에는 다섯 번째 필드가 비어 있습니다. 이 줄을 모두 인쇄하고 싶습니다.
결과는 다음과 같아야 합니다.
1,abc,543,87,,fsg;
1,abc,543,87,,fsg;
답변1
다른 awk
:
$ awk -F, '!length($5)' file
1,abc,543,87,,fsg;
1,abc,543,88,,fsg;
답변2
옵션을 사용하여 다른 필드 구분 기호(기본값은 공백)를 사용한 -F
다음 다섯 번째 열이 비어 있는지 확인할 수 있습니다.
awk -F',' '{if($5==""){print $0}' myfile
또는 더 간결하게 말하면:
awk -F, '$5==""' myfile
--
sed 명령을 사용하십시오.
sed -n '/,,[^,]*$/p' myfile
-n
일치하지 않는 한 ( )를 인쇄하지 마세요 . /,,[^,]*$/
즉, (5번째 필드가 비어 있음) + 6번째 필드에 ( = 쉼표를 제외한 모든 항목) ...$
으로 끝납니다. 필드가 6개보다 많으면 명령이 예상대로 작동하지 않습니다.,,
,
[^,]
답변3
간단한 것만으로 awk
도 충분합니다:
awk -F, '$5==""' your_file
설명하다
,
필드 구분 기호가 (-F ,
) 로 설정되었습니다 .- 기본 작업은
awk
현재 레코드를 인쇄하는 것입니다. 다섯 번째 필드가 비어 있는 경우에만 이 일이 발생하는지 확인합니다($5 == ""
).
답변4
awk
다음 명령을 사용할 수 있습니다 .
$ awk '/^(.*,){4},.*/' filename
1,abc,543,87,,fsg;
1,abc,543,88,,fsg;
정규식은 임의의 문자 뒤에 ,
4번 오고, 다음 문자는 다른 문자 ,
(다섯 번째 공백 필드)여야 하고 그 뒤에 아무 것도 와야 하는지 테스트합니다.