내가 검색하는 문자열이 해당 줄에 있는 유일한 경우에만 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