두 개의 값만 포함된 문자열이 포함된 행을 어떻게 삭제할 수 있나요?

두 개의 값만 포함된 문자열이 포함된 행을 어떻게 삭제할 수 있나요?

줄에 두 개의 값(열)만 포함되어 있는 경우 특정 문자열이 있는 파일 줄을 모두 삭제하고 싶습니다. sed를 사용해 보았지만 해당 문자열이 포함된 모든 줄이 삭제됩니다.

sed '/string/d' file

ex XX 문자열의 경우 입력 파일은 다음과 같습니다.

A B C D 
XX 5 6 
XX 2
XX 1 2 3

출력 파일은

A B C D 
XX 5 6 
XX 1 2 3

답변1

한 가지 방법은 패턴 부분을 사용하여 true로 평가하여 기본적으로 줄을 인쇄하는 것입니다.

awk -v str="XX" '
  NR == 1 || $1 != str || NF != 2
' file

대상 문자열이 첫 번째 필드에서만 일치한다고 가정합니다.

관련 정보