GNU/Linux >> Tutoriales Linux >  >> Linux

Usando múltiples patrones a la vez con el comando Sed

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


Linux
  1. Manipulación de texto en la línea de comando con sed

  2. ¿Usando Sed con caracteres especiales?

  3. ¿Guardar archivo después de usar el comando Sed?

  4. Texto de archivo múltiple ¿Reemplazar con Sed?

  5. sustituir texto con igual longitud usando sed

Administre la seguridad de la red con Firewalld usando líneas de comando

Cómo ejecutar varios comandos de Linux a la vez en la terminal de Linux

Primeros pasos con el comando SED [Guía para principiantes]

Programar trabajos en Linux con el comando 'at'

Uso del comando sed de Linux con ejemplos

Usando el comando tr en Linux para jugar con personajes