Cómo eliminar una línea si la cadena es lo único en la línea

Cómo eliminar una línea si la cadena es lo único en la línea

¿Cómo puedo usar sed u otra cosa para eliminar una línea solo si la cadena que estoy buscando es lo único en la línea?

Salida de ejemplo:

    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

Necesito eliminar las líneas que contienen "}", pero sólo las líneas que no contienen nada más. Si uso sed para hacer coincidir y eliminar una línea que contiene "}", en la salida sobre la línea "tipo de objeto" también se eliminará.

Sería bueno buscar " },/n", pero todos sabemos que sed no funciona de esa manera.

Gracias por tu ayuda.

Respuesta1

No es necesario sed:

grep -vx }, file

O para permitir espacios en blanco:

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

Respuesta2

sedusos $para el final de línea:

sed '/^},$/ d'

^significa el comienzo de la línea. Es posible que también necesites tolerar algunos espacios en blanco alrededor },.

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

Respuesta3

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

Respuesta4

Puedes hacerlo de muchas maneras, aquí tienes una perlsolución:

$ 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

información relacionada