sed
usa $
para o fim da linha:
sed '/^},$/ d'
^
significa o início da linha. Você também pode precisar tolerar alguns espaços em branco em torno de },
.
sed '/^[[:space:]]*},[[:space:]]*$/ d'
Como posso usar o sed ou alguma outra coisa para excluir uma linha apenas 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 as linhas que não contêm mais nada. Se eu usar sed para combinar e excluir uma linha contendo "}", na saída acima da linha "tipo de objeto" também será excluída.
Seria bom procurar por "}, / n", mas todos sabemos que o sed não funciona dessa maneira.
Obrigado pela sua ajuda.
Não há necessidade de sed
:
grep -vx }, file
Ou para permitir espaços em branco:
grep -vx '[[:blank:]]*},[[:blank:]]*' file
sed '/^[[:blank:]]*},[[:blank:]]*$/d' file
Você pode fazer isso de várias formas, aqui está uma perl
solution:
$ 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
Tags bash sed shell-script