¿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
sed
usos $
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 perl
solució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