CSV에서 다섯 번째 필드가 비어 있는 행을 인쇄하는 방법

CSV에서 다섯 번째 필드가 비어 있는 행을 인쇄하는 방법

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번 오고, 다음 문자는 다른 문자 ,(다섯 번째 공백 필드)여야 하고 그 뒤에 아무 것도 와야 하는지 테스트합니다.

관련 정보