GNU/Linux >> Tutoriels Linux >  >> Linux

Utilisation de plusieurs modèles à la fois avec la commande Sed

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


Linux
  1. Comment exécuter Grep avec plusieurs et modèles ?

  2. Utiliser Sed avec des caractères spéciaux ?

  3. Remplacer plusieurs textes de fichiers par Sed ?

  4. Utilisation de sed pour diviser une chaîne avec un délimiteur

  5. Recherche de plusieurs motifs (mots) avec ack ?

Gérer la sécurité du réseau avec Firewalld à l'aide de lignes de commande

Comment exécuter plusieurs commandes Linux à la fois dans le terminal Linux

Premiers pas avec la commande SED [Guide du débutant]

Planifier des travaux sous Linux avec la commande 'at'

Utilisation de la commande Linux sed avec des exemples

Utilisation de la commande tr sous Linux pour jouer avec des personnages