Como posso usar sed ou qualquer outra coisa para excluir uma linha somente se a string que estou procurando for a única coisa na linha?
Exemplo de saída:
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
Preciso excluir as linhas que contêm "}", mas apenas nas linhas que não possuem mais nada. Se eu usar sed para combinar e excluir uma linha contendo "}", na saída acima da linha "tipo de objeto" também seria excluída.
Seria bom procurar por "},/n", mas todos sabemos que o sed não funciona dessa maneira.
Obrigado pela ajuda.
Responder1
Não há necessidade de sed
:
grep -vx }, file
Ou para permitir espaços em branco:
grep -vx '[[:blank:]]*},[[:blank:]]*' file
Responder2
sed
usa $
para o final da linha:
sed '/^},$/ d'
^
significa o início da linha. Você também pode precisar tolerar alguns espaços em branco ao redor },
.
sed '/^[[:space:]]*},[[:space:]]*$/ d'
Responder3
sed '/^[[:blank:]]*},[[:blank:]]*$/d' file
Responder4
Você pode fazer isso de várias maneiras, aqui está uma perl
solução:
$ 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