Voici une question de l'un de nos lecteurs réguliers, M. Manish. Sa question est de savoir comment utiliser plusieurs modèles à la fois avec la commande Sed sous Linux pour les opérations de suppression ou de remplacement.
Prenons un exemple de fichier contenant le texte suivant. (J'utilise le même exemple que le lecteur a demandé).
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
Maintenant, le lecteur veut un seul Sed
commande pour supprimer les lignes qui correspondent au modèle – SLURM_JOB_USER
&SLURM_SUBMIT_DIR
du dossier. Alors, comment faites-vous cela? C'est parti.
Supprimer le motif de correspondance de ligne et imprimer avec Sed
Syntaxe :
$ set '/PATTERN/d' filename
$ sed '/SLURM_JOB_USER/d' test.txt
La commande ci-dessus supprimera la ligne correspondant au modèle 'SLURM_JOB_USER
‘ et imprime la sortie sur la sortie standard.
Supprimer le motif de correspondance de ligne et modifier le fichier avec Sed
Syntaxe :
$ set -i '/PATTERN/d' filename
Le '-i'
l'option modifiera le fichier.
$ sed -i '/SLURM_JOB_USER/d' test.txt
Utiliser plusieurs modèles à la fois avec Sed
Que faire si vous souhaitez supprimer plusieurs lignes correspondant à plusieurs modèles avec une seule commande Sed ? C'est parti,
Syntaxe :
$ set -i '/PATTERN1/d;/PATTERN2/d' filename
$ sed -i '/SLURM_JOB_USER/d;/SLURM_SUBMIT_DIR/d' test.txt
La commande ci-dessus supprimera les lignes contenant SLURM_JOB_USER
et SLURM_SUBMIT_DIR
motifs et enregistrez le fichier. Notez le point-virgule (;) pour saisir plusieurs modèles dans la même commande.
Remplacer le motif et imprimer avec Sed
Syntaxe :
$ sed 's/PATTERN/REPLACE_STRING/g' test.txt
$ sed 's/SLURM_JOB_USER/REPLACE1/g' test.txt
'g'
représente global :il remplace toutes les instances du modèle dans chaque ligne, au lieu de la première uniquement (ce qui est le comportement par défaut)
Remplacer le motif et modifier le fichier avec Sed
$ sed -i 's/SLURM_JOB_USER/REPLACE1/g' test.txt
Option '-i'
modifiera le fichier.
Utiliser plusieurs modèles à la fois avec Sed
$ sed -i 's/SLURM_JOB_USER/REPLACE1/g;s/SLURM_SUBMIT_DIR/REPLACE2/g' test.txt
Faites attention au point-virgule (;) pour ajouter plus de modèles dans la seule commande.
Aimer? Faites-nous savoir si vous avez une question dans les commentaires ci-dessous et nous essaierons de la couvrir ici.
Référence