Eliminar exactamente una línea en un archivo

Eliminar exactamente una línea en un archivo

Tengo un archivo que contiene las siguientes líneas:

SUKsoft:
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW

¿Cómo puedo eliminar la línea "SUKsoft:"?

Esta línea podría estar en cualquier lugar del archivo (comenzando como está ahora o en el medio).

¿Existe un comando para hacer esto?

Respuesta1

Aeliminarel uso de la línea

sed -i '/SUKsoft:\s*$/d' your_file 

Ejemplo

% cat foo
SUKsoft: 
SUKsoft: App-Conduct_Risk_Comment   
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW

% sed -i '/SUKsoft:\s*$/d' foo

% cat foo                    
SUKsoft: App-Conduct_Risk_Comment   
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW

Respuesta2

Estos son los pasos para eliminar la línea deseada:

$ sed 's/SUKsoft: *$//' file.txt

SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW

Supongo que file.txtcontiene las líneas.

O,

$ sed 's/SUKsoft: *$//; /^$/d' file.txt
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW

no deja nadablancolínea.

Para editar el archivo puedes usar,

sed -i 's/SUKsoft: *$//' file.txt

o

sed -i 's/SUKsoft: *$//; /^$/d' file.txt

según su necesidad.

VerABLa respuesta es donde se hace de manera más compacta. Gracias aComodín.

Respuesta3

grepbusca líneas que satisfagan un patrón. grep -v descartesLíneas que satisfacen un patrón.

grep -v '^SUKsoft: *$'

El patrón es: líneas que comienzan ( ^) con SUKsoft:, posiblemente seguidas de espacios pero nada más hasta el final de la línea ( $).

Respuesta4

A juzgar por tupublicar no fuente crudano hay espacio ni secuencia de espacios después de "SUKsoft:", sin embargo, para estar seguro, este comando se encargará de los que estén presentes.

Usando Perl:

perl -ne '!/^SUKsoft: *$/&&print' input
  • !/^SUKsoft:$/&&print: si la línea actual no coincide con el patrón ^SUKsoft: *$, que coincide con una línea que comienza con SUKsoft:una cadena seguida de cero o más espacios, imprime la línea;
% cat input
SUKsoft:
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW
% perl -ne 'print unless /^SUKsoft: *$/' input
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW

información relacionada