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