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