특정 필드의 값을 기반으로 파이프로 구분된 파일에서 줄을 삭제하는 방법은 무엇입니까?

특정 필드의 값을 기반으로 파이프로 구분된 파일에서 줄을 삭제하는 방법은 무엇입니까?

다음과 같이 파이프로 구분된 파일이 있습니다.

968666|JOHN|M|DOB
145465|DAVID|M|NULL
898563|SAUL|NULL|DOB
968666|JOHN|F|NULL

열 4에 NULL이 포함된 행을 삭제하는 방법은 무엇입니까?

예상 출력

968666|JOHN|M|DOB
898563|SAUL|NULL|DOB

답변1

sed 예:

sed '/\|.*\|.*\|NULL/d' <file>

NULL이 항상 줄 끝에 있을 때의 sed 예:

sed '/NULL$/d' <file>

답변2

awk -F"|" '{if ($4!~/NULL/) {print $0} }'  file

관련 정보