텍스트 파일의 빈 필드 값을 찾아 한 줄 전체를 삭제할 수 있는 명령어가 있는지 궁금합니다.
예
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인 경우 awk
false로 평가되므로 해당 행을 인쇄합니다.
답변4
때로는 삭제 조건( )을 정의하는 것이 grep -v
더 쉽습니다 . 마지막 필드가 비어 있는 경우 제거의 예:
grep -v ':$' file