GNU/Linux >> Linux Esercitazione >  >> Linux

Utilizzo di più modelli contemporaneamente con il comando Sed

Ecco una domanda di uno dei nostri lettori abituali, il signor Manish. La sua domanda è:come utilizzare più pattern contemporaneamente con il comando Sed in Linux per eliminare o sostituire le operazioni.

Considera un file di esempio contenente il testo seguente. (Sto usando lo stesso esempio richiesto dal lettore).

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

Ora il lettore vuole un singolo Sed comando per eliminare le righe che corrispondono al modello – SLURM_JOB_USER &SLURM_SUBMIT_DIR dal file. Allora come lo fai? Eccoci.

Elimina il modello di corrispondenza della linea e stampa con Sed

Sintassi:

$ set '/PATTERN/d' filename
$ sed '/SLURM_JOB_USER/d' test.txt

Il comando precedente eliminerà la riga che corrisponde al modello 'SLURM_JOB_USER ' e stampa l'output sullo stdout.

Elimina il modello di corrispondenza della linea e modifica il file con Sed

Sintassi:

$ set -i '/PATTERN/d' filename

Il '-i' l'opzione modificherà il file.

$ sed -i '/SLURM_JOB_USER/d' test.txt

Utilizzare più pattern contemporaneamente con Sed

Cosa succede se desideri eliminare più righe corrispondenti a più pattern con un unico comando Sed? Eccoci,

Sintassi:

$ set -i '/PATTERN1/d;/PATTERN2/d' filename
$  sed -i '/SLURM_JOB_USER/d;/SLURM_SUBMIT_DIR/d' test.txt

Il comando precedente eliminerà le righe contenenti SLURM_JOB_USER e SLURM_SUBMIT_DIR modelli e salvare il file. Nota il punto e virgola (;) per inserire più pattern all'interno di un singolo comando.

Sostituisci motivo e stampa con Sed

Sintassi:

$ sed 's/PATTERN/REPLACE_STRING/g' test.txt
$ sed 's/SLURM_JOB_USER/REPLACE1/g' test.txt

'g' rappresenta globale :sostituisce tutte le istanze del modello in ogni riga, anziché solo la prima (che è il comportamento predefinito)

Sostituisci pattern e modifica il file con Sed

$ sed -i 's/SLURM_JOB_USER/REPLACE1/g' test.txt

Opzione '-i' modificherà il file.

Utilizza più pattern contemporaneamente con Sed

$ sed -i 's/SLURM_JOB_USER/REPLACE1/g;s/SLURM_SUBMIT_DIR/REPLACE2/g' test.txt

Cerca il punto e virgola(;) per aggiungere più pattern all'interno del singolo comando.

Lo adoro? Facci sapere se hai una domanda nei commenti qui sotto e proveremo a trattarla qui.

Riferimento


Linux
  1. Sostituisci le virgolette intelligenti con il comando sed di Linux

  2. Manipolazione del testo da riga di comando con sed

  3. Come eseguire Grep con multipli e pattern?

  4. Utilizzo di sed per dividere una stringa con un delimitatore

  5. Ricerca di più modelli (parole) con ack?

Gestisci la sicurezza della rete con Firewalld utilizzando le righe di comando

Come eseguire più comandi Linux contemporaneamente nel terminale Linux

Guida introduttiva al comando SED [Guida per principianti]

Pianifica i lavori in Linux con il comando 'at'

Utilizzo del comando Linux sed con esempi

Usare il comando tr in Linux per giocare con i personaggi