Maison >Tutoriel système >Linux >Résumé complet : explication détaillée du traitement multiligne Linux sed
Dans des circonstances normales, sed lit la ligne à traiter dans l'espace de modèle et les commandes du script traitent la ligne l'une après l'autre jusqu'à ce que le script soit exécuté, puis la ligne est sortie et l'espace de modèle est vide, puis répétez ; Avec l'action qui vient d'être effectuée, une nouvelle ligne du fichier est lue jusqu'à ce que le fichier soit complètement traité. Cependant, diverses raisons, telles que l'espoir de l'utilisateur qu'une certaine commande du script soit exécutée dans certaines conditions, ou l'espoir que l'espace de modèle soit conservé pour le prochain traitement, peuvent amener sed à ne pas suivre les instructions lors du traitement des fichiers Carry. le processus normal. À l'heure actuelle, sed a mis en place des commandes avancées pour répondre aux besoins des utilisateurs. Si vous souhaitez apprendre les commandes avancées de sed, vous devez d'abord comprendre les deux zones de cache suivantes :
1. Définition de l'espace de modèle : l'espace de modèle est une zone tampon qui enregistre ce que sed vient de lire depuis l'extrémité d'entrée.
2. Définition de l'espace de conservation : l'espace de conservation est utilisé pour mettre temporairement en cache les données lors du traitement des données de l'espace de modèle.
Il existe également plusieurs paramètres de commande :
g : copiez le contenu de l'espace de conservation dans l'espace de motif et effacez le contenu original dans l'espace de motif
G : Ajoutez le contenu de l'espace de maintien à l'espace de motif
h : Copiez le contenu de l'espace de motif vers l'espace de conservation, et le contenu de l'espace de conservation d'origine est effacé
H : Ajoutez le contenu de l'espace de motif à l'espace de maintien
x : échangez le contenu de l'espace de motif et maintenez l'espace
Par exemple, nous souhaitons inverser le contenu d'un fichier. Le fichier est le suivant :
[qiu.li@l-tdata1.tkt.cn6 ~]$ cat tmp 1-line 2-line 3-line
Exécutez la commande suivante :
[qiu.li@l-tdata1.tkt.cn6 ~]$ sed '2,$G;h;$!d' tmp 3-line 2-line 1-line
Comprenons progressivement le processus d'exécution ci-dessus
1. Analysons les trois commandes suivantes :
2. Opérations spécifiques
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!