빈 필드 값이 있는 행을 Grep하고 삭제합니다.

빈 필드 값이 있는 행을 Grep하고 삭제합니다.

텍스트 파일의 빈 필드 값을 찾아 한 줄 전체를 삭제할 수 있는 명령어가 있는지 궁금합니다.

 Hello:Its Me
 Hello:How are you
 Hello:
 Hello:Bye

및 예상 출력

 Hello:Its Me
 Hello:How are you
 Hello:Bye

답변1

매우 표준적인 경우, 가장 간단한 해결책 awk은 다음과 같습니다.

awk -F: '$2 != ""' file

그리고 grep:

grep :. file 

답변2

Hello:몇 줄을 건너뛰려면 다음과 같은 방법을 사용할 수 있습니다.

awk -F: '{if($2 != "") print }' input_file 

답변3

적어도 GNU awk에서는 모든 버전의 awk에서 무언가 평가할 때 기본 동작은 true인쇄하는 것이라고 생각합니다. 따라서 필드 구분 기호를 로 설정한 경우 :두 번째 필드가 있는 행을 인쇄하려면 다음 작업을 수행하면 됩니다.

$ awk -F: '$2' file
Hello:Its Me
Hello:How are you
Hello:Bye

그러나 이는 두 번째 필드가 공백(공백 또는 탭 등)인 경우도 인쇄하지만아니요0두 번째 필드가 하나 이상의 s인 경우 awkfalse로 평가되므로 해당 행을 인쇄합니다.

답변4

때로는 삭제 조건( )을 정의하는 것이 grep -v더 쉽습니다 . 마지막 필드가 비어 있는 경우 제거의 예:

grep -v ':$' file

관련 정보