Aquí hay una pregunta de uno de nuestros lectores habituales, el Sr. Manish. Su pregunta es cómo usar varios patrones a la vez con el comando Sed en Linux para operaciones de eliminación o reemplazo.
Considere un archivo de ejemplo que contiene el siguiente texto. (Estoy usando el mismo ejemplo que pidió el lector).
SLURM_CLUSTER_NAME = test SLURM_JOB_ID = 525595 SLURM_JOB_NAME = test1 SLURM_JOB_USER = test SLURM_JOB_NODELIST = cn01 SLURM_JOB_UID = 5016 SLURM_JOB_PARTITION = standard-low SLURM_SUBMIT_DIR = /home/test SLURM_TASK_PID = 108983 SLURM_CPUS_ON_NODE = 1 SLURM_NTASKS = SLURM_TASK_PID = 108983
Ahora el lector quiere un solo Sed
comando para eliminar las líneas que coinciden con el patrón:SLURM_JOB_USER
&SLURM_SUBMIT_DIR
del archivo Asique como haces eso? Aquí vamos.
Eliminar patrón de coincidencia de líneas e imprimir con Sed
Sintaxis:
$ set '/PATTERN/d' filename
$ sed '/SLURM_JOB_USER/d' test.txt
El comando anterior eliminará la línea que coincida con el patrón 'SLURM_JOB_USER
‘e imprime la salida en la salida estándar.
Elimine el patrón de coincidencia de líneas y modifique el archivo con Sed
Sintaxis:
$ set -i '/PATTERN/d' filename
El '-i'
La opción modificará el archivo.
$ sed -i '/SLURM_JOB_USER/d' test.txt
Usando múltiples patrones a la vez con Sed
¿Qué sucede si desea eliminar varias líneas que coincidan con varios patrones con un solo comando Sed? Aquí vamos,
Sintaxis:
$ set -i '/PATTERN1/d;/PATTERN2/d' filename
$ sed -i '/SLURM_JOB_USER/d;/SLURM_SUBMIT_DIR/d' test.txt
El comando anterior eliminará las líneas que contienen SLURM_JOB_USER
y SLURM_SUBMIT_DIR
patrones y guarde el archivo. Tenga en cuenta el punto y coma (;) para ingresar múltiples patrones dentro de un solo comando.
Reemplazar patrón e imprimir con Sed
Sintaxis:
$ sed 's/PATTERN/REPLACE_STRING/g' test.txt
$ sed 's/SLURM_JOB_USER/REPLACE1/g' test.txt
'g'
representa global:reemplaza todas las instancias del patrón en cada línea, en lugar de solo la primera (que es el comportamiento predeterminado)
Reemplazar patrón y modificar el archivo con Sed
$ sed -i 's/SLURM_JOB_USER/REPLACE1/g' test.txt
Opción '-i'
modificará el archivo.
Utilice varios patrones a la vez con Sed
$ sed -i 's/SLURM_JOB_USER/REPLACE1/g;s/SLURM_SUBMIT_DIR/REPLACE2/g' test.txt
Busque el punto y coma (;) para agregar más patrones dentro de un solo comando.
¿Me encanta? Háganos saber si tiene una consulta en los comentarios a continuación e intentaremos cubrirla aquí.
Referencia