sed
Semblable à vim, c'est un éditeur de texte, mais sed est édité et traité par ligne
Fonction principale : ajouter, supprimer, modifier et vérifier le contenu du texte, la plus puissante étant l'opération de modification
Remarque : les expressions régulières peuvent être prises en charge, et les expressions régulières étendues peuvent également être prises en charge, mais les expressions régulières ne sont pas entièrement fiables.
Comment fonctionne sed
Comprenant trois processus : lecture-exécution-affichage
Lire : Après avoir lu le contenu du texte, le contenu lu sera stocké dans un tampon temporaire (espace de motif)
Exécution : dans l'espace de modèle, exécutez ligne par ligne en fonction du contenu du texte lu et parcourez toutes les lignes sauf si le numéro de ligne est spécifié. Exécutez séquentiellement, de haut en bas.
Affichage : une fois l'exécution terminée, imprimez le résultat de l'exécution. Si la modification doit prendre effet, le contenu modifié de l'espace de modèle sera écrit dans le fichier spécifié. Si seulement l'opération, mais
En fin de compte, le fichier ne sera pas écrit et seul le résultat sera affiché. Une fois l'affichage terminé, les données dans l'espace de motif seront immédiatement supprimées.
format sed et options communes
sed -e 'opérateur' fichier1 -e 'opérateur' fichier2
N'ajoutez pas -e lorsque vous travaillez uniquement sur un seul fichier
Options courantes :
-e : option d'action conditionnelle
-f : Spécifie le fichier de script pour traiter le contenu du fichier d'entrée. Écrivez les commandes dans le script et utilisez les commandes du script pour traiter le contenu du deuxième fichier.
-i : À utiliser immédiatement avec prudence ! !
-n : affiche le résultat après le traitement du script (la sortie par défaut de sed est interdite)
Opérateur : il faut utiliser des guillemets simples ''
s : remplace le caractère spécifié
d : supprimer, supprimer la ligne spécifiée
a : augmenter, insérer le contenu spécifié sous la ligne actuelle
i : augmenter, insérer le contenu spécifié au-dessus de la ligne spécifiée
c : remplacer, remplacer toute la ligne
y : remplacer, remplacer des caractères, mais la longueur des caractères avant et après le remplacement doit être la même.
p : print (sed a une sortie par défaut)
r : utiliser la régularisation étendue
Le fonctionnement de sed
fonction de vérification sed
sed imprime la ligne spécifiée, adressant les impressions
sed -n '4p' filename # imprimer la quatrième ligne
sed -n '$p' filename #imprimer directement la dernière ligne
Méthode 2 : imprimer l'intervalle de plage du numéro de ligne
sed -n '1,3p' filename #imprimer la première ligne sur la troisième ligne
sed -n '2,$p' filename # affiche la deuxième ligne jusqu'à la dernière ligne
sed -n '2p;$p' filename : affiche la deuxième ligne jusqu'à la dernière ligne
La plage de numéros de ligne s'imprime : , à ; et
Imprimez les lignes paires et impaires :
sed -n 'n;p' nom de fichier (n doit sauter la première ligne et n doit sauter la deuxième ligne)
Mode de filtre de texte :
Premièrement : imprimez le contenu contenant la chaîne spécifiée :
sed -n '/o/p' nom de fichier
sed -n '/big/p' nom du fichier #Toutes les lignes contenant big seront imprimées
Appliquez une expression régulière de base pour imprimer :
sed -n '/^root/p' /etc/passwd #imprimer la ligne commençant par root
sed -n '/bash$/p' /etc/passwd #imprimer la ligne se terminant par bash
sed supprimer
Précisez le numéro de ligne à supprimer :
sed -n '3d;p'filename#Supprimez le contenu de la troisième ligne et imprimez le contenu restant.
sed -n '1d;3d;p' file name #Supprimez le contenu des première et troisième lignes et imprimez le contenu restant.
sed -n '1d, 3d;p' file name #Supprimez le contenu de la première ligne à la troisième ligne et imprimez le contenu restant.
(, signifie à; signifie et)
sed '/big/d' nom de fichier # correspond au contenu de la chaîne (big) à supprimer
sed '/o/! d' nom de fichier # correspond au contenu de la chaîne (o), supprime tout sauf o
Utilisez des expressions régulières pour supprimer :
sed '/^$/d' nom de fichier #supprimer les lignes vides
Remplacement de sed (souligné !!)
s Chaîne de remplacement :
sed -n 's/root/test/p' /etc/passwd #Remplacez la première racine de la ligne actuelle par test
sed -n 's/root/test/gp' /etc/passwd #Remplacez toutes les racines de la ligne actuelle par test
Casse des caractères alphabétiques pour la substitution :
l& : un symbole spécial converti en minuscules et un caractère d'échappement est requis lors de sa nouvelle utilisation.
u& : symbole spécial converti en taille, lorsqu'il est utilisé, un caractère d'échappement est requis
g : remplacez tout, s'il n'est pas ajouté, remplacez uniquement la première lettre
sed 's/[az]/\u&/' 123.txt
c pour remplacer toute la ligne :
sed '/ligne à remplacer/c contenu à remplacer' nom du fichier
y remplacement d'un seul caractère :
sed 'y/'
L'ajout de sed
a Ajouter sur la ligne suivante : sed '/ligne spécifiée/un contenu ajouté' nom de fichier
i Ajouter sur la ligne précédente : sed '/ligne spécifiée/j'ai ajouté du contenu' nom du fichier
r lit le contenu du fichier spécifié au numéro de ligne (ajouter après la ligne) :
sed '/Sous la ligne actuelle du fichier d'origine/r Le fichier pour lire le contenu' spécifie le fichier pour l'opération
Afficher les journaux dans un délai spécifié :
sed -n '/20 juillet 18:36:12/,/20 juillet 18:50:01/p' /var/log/messages
questions d'entretien
1. Que dois-je faire si le fichier est trop volumineux ?
Méthode 1 : split -l coupé par ligne à traiter (convient aux fichiers volumineux)
Méthode 2 : nom de fichier cat | traitement sed (pour les fichiers de taille moyenne)
2. Comment supprimer le contenu du fichier sans entrer dans le fichier (c'est-à-dire supprimer sans interaction)
Méthode 1 : sed -i 'd' nom de fichier
Méthode 2 : cat /dev/null > nom du fichier