줄에 문자열만 있는 경우 줄을 삭제하는 방법

줄에 문자열만 있는 경우 줄을 삭제하는 방법

내가 검색하고 있는 문자열이 해당 줄에 있는 유일한 경우에만 sed나 다른 것을 사용하여 줄을 삭제할 수 있습니까?

예제 출력:

    device-address-binding: ?
    database-revision: 20
  -- Found 198 Objects 
  }, 
  { 
    object-identifier: (Analog Input, 1)
    object-type: ({  Analog Input  },)
    object-name: "CA-1 T EXT"
    descrip

" }"가 포함된 줄을 삭제해야 하는데, 다른 내용이 없는 줄만 삭제해야 합니다. sed를 사용하여 " }"가 포함된 줄을 일치시키고 삭제하면 줄 위의 출력에서 ​​"object-type" 줄도 삭제됩니다.

" },/n"을 검색하면 좋겠지만 sed가 그런 식으로 작동하지 않는다는 것을 우리 모두 알고 있습니다.

당신의 도움을 주셔서 감사합니다.

답변1

다음이 필요하지 않습니다 sed.

grep -vx }, file

또는 공백을 허용하려면 다음을 수행하십시오.

grep -vx '[[:blank:]]*},[[:blank:]]*' file

답변2

sed$줄 끝에 사용 :

sed '/^},$/ d'

^라인 시작을 의미합니다. 주위에 약간의 공백을 허용해야 할 수도 있습니다 },.

sed '/^[[:space:]]*},[[:space:]]*$/ d'

답변3

sed '/^[[:blank:]]*},[[:blank:]]*$/d' file

답변4

다양한 방법으로 이를 수행할 수 있습니다 perl. 해결책 은 다음과 같습니다.

$ perl -ple 's#^\s*},\s*##' file
    device-address-binding: ?
    database-revision: 20
  -- Found 198 Objects 

  { 
    object-identifier: (Analog Input, 1)
    object-type: ({  Analog Input  },)
    object-name: "CA-1 T EXT"
    descrip

관련 정보