15 Conseils et astuces de commande «SED» utiles pour les tâches quotidiennes d'administration du système Linux
- 1246
- 70
- Maëlle Perez
Chaque administrateur système doit faire face aux fichiers texte brut au quotidien. Savoir comment afficher certaines sections, comment remplacer les mots et comment filtrer le contenu de ces fichiers sont des compétences dont vous avez besoin pour avoir à portée de main sans avoir à faire une recherche Google.
15 Conseils et astuces de commande «SED» utiles pour LinuxDans cet article, nous passerons en revue SED, l'éditeur de flux bien connu, et partagerons 15 conseils pour l'utiliser afin d'atteindre les objectifs mentionnés précédemment, et plus.
1. Affichage d'une gamme de lignes d'un document
Des outils tels que la tête et la queue nous permettent de visualiser le bas ou le haut d'un fichier. Et si nous devons voir une section au milieu? La liner SED suivante retournera les lignes 5 à travers dix depuis mon fichier.SMS:
# sed -n '5,10p' myfile.SMS
2. Affichage de l'ensemble du fichier sauf une plage donnée
D'un autre côté, il est possible que vous souhaitiez imprimer le fichier entier sauf une certaine plage. Pour exclure les lignes 20 à travers 35 depuis mon fichier.SMS, faire:
# sed '20, 35d 'myfile.SMS
3. Affichage de lignes et de plages non consécutives
Il est possible que vous soyez intéressé par un ensemble de lignes non consécutives, ou dans plus d'une plage. Affichons les lignes 5-7 et 10-13 depuis mon fichier.SMS:
# sed -n -e '5,7p' -e '10, 13p 'myfile.SMS
Comme vous pouvez le voir, le -e
L'option nous permet d'exécuter une action donnée (dans ce cas, des lignes d'impression) pour chaque plage.
4. Remplacement des mots ou des caractères (substitution de base)
Pour remplacer chaque instance du mot version
avec histoire
dans mon fichier.SMS, faire:
# SED 'S / Version / Story / G' Myfile.SMS
De plus, vous voudrez peut-être envisager d'utiliser gi
au lieu de g
Afin d'ignorer le cas du caractère:
# SED 'S / Version / Story / Gi' Myfile.SMS
Pour remplacer plusieurs espaces vides par un seul espace, nous utiliserons la sortie de IP Route Show
et un pipeline:
# IP Route Show | sed 's / * / / g'
Comparez la sortie de IP Route Show
avec et sans le pipeline:
5. Remplacement des mots ou des caractères dans une gamme
Si vous êtes intéressé à remplacer les mots uniquement dans une plage de ligne (30 à travers 40, Par exemple), vous pouvez faire:
# SED '30, 40 S / Version / Story / G 'Myfile.SMS
Bien sûr, vous pouvez indiquer une seule ligne à travers son numéro correspondant au lieu d'une plage.
6. En utilisant des expressions régulières (substitution avancée) - i
Parfois, les fichiers de configuration sont chargés de commentaires. Bien que cela soit certainement utile, il peut être utile d'afficher uniquement les directives de configuration si vous voulez les voir toutes en un coup d'œil.
Pour supprimer les lignes vides ou ceux qui commencent par #
Dans le fichier de configuration Apache, faites:
# sed '/ ^ # \ | ^ $ \ | * # / d 'httpd.confli
Le panneau de caret suivi du panneau numérique (^ #)
indique le début d'une ligne, alors que ^ $
représente les lignes vides. Les barres verticales indiquent des opérations booléennes, tandis que la barre oblique est utilisée pour échapper aux barres verticales.
Dans ce cas particulier, le fichier de configuration Apache a des lignes avec #
Pas au début de certaines lignes, donc * #
est utilisé pour les supprimer également.
7. En utilisant des expressions régulières (substitution avancée) - II
Pour remplacer un mot commençant par des majuscules ou des minuscules par un autre mot, nous pouvons également utiliser SED. Pour illustrer, remplacez le mot zipper ou Zipper avec rar dans mon fichier.SMS:
# SED 'S / [ZZ] IP / RAR / G' MYFILE.SMS
Ne manquez pas: Utilisez awk avec des expressions régulières pour filtrer le texte dans les fichiers
8. Affichage des lignes contenant avec un motif donné
Une autre utilisation de sed consiste à imprimer les lignes d'un fichier qui correspond à une expression régulière donnée. Par exemple, nous pouvons être intéressés à consulter les activités d'autorisation et d'authentification qui ont eu lieu sur 2 juillet, selon le / var / log / sécurisé Connectez-vous un Centos 7 serveur.
Dans ce cas, le modèle à rechercher est 2 juillet Au début de chaque ligne:
# sed -n '/ ^ juil 1 / p' / var / log / sécuriséAfficher les journaux (lignes) d'une date particulière
9. Insertion des espaces dans des fichiers
Avec sed, Nous pouvons également insérer des espaces (lignes vides) pour chaque ligne non vide dans un fichier. Pour insérer une ligne vide toutes les autres lignes dans LICENCE, un fichier texte brut, faites:
# sed g myfile.SMS
Pour insérer deux lignes vierges, faites:
# sed 'g; g' myfile.SMS
Ajouter un majuscule g séparés par un point-virgule si vous souhaitez ajouter plus de lignes vierges. L'image suivante illustre l'exemple décrit dans cette astuce:
Insérer des espaces dans le fichierCette astuce peut être utile si vous souhaitez inspecter un grand fichier de configuration. L'insertion d'un espace vierge toutes les autres lignes et de la sortie de la sortie à moins se traduira par une expérience de lecture plus adaptée.
dix. Émulation dos2unix avec montage en ligne
Le dos2unix Le programme convertit les fichiers texte brut de la mise en forme Windows / Mac à Unix / Linux, supprimant les caractères de Newline cachés insérés par certains éditeurs de texte utilisés dans ces plateformes. S'il n'est pas installé dans votre système Linux, vous pouvez imiter sa fonctionnalité avec sed Au lieu de l'installer.
Dans l'image à gauche, nous pouvons voir plusieurs caractères DOS Newline (^ M)
, qui ont ensuite été supprimés avec:
# sed -i 's / \ r //' myfile.SMSFichiers texte secrètes de Windows à Linux
Veuillez noter que le -je
option indiquer l'édition sur place. Alors les modifications ne seront pas renvoyées à l'écran, mais seront enregistrées dans le fichier.
Note: Vous pouvez insérer des caractères DOS Newline lors de l'édition d'un fichier dans l'éditeur VIM avec Ctrl + v
et Ctrl + m
.
11. Édition en place et sauvegarde du fichier d'origine
Dans la pointe précédente, nous avons utilisé sed Pour modifier un fichier mais n'a pas enregistré le fichier d'origine. Parfois, c'est une bonne idée de enregistrer une copie de sauvegarde du fichier d'origine au cas où.
Pour ce faire, indiquez un suffixe suivant le -je
Option (à l'intérieur des devis uniques) à utiliser pour renommer le fichier d'origine.
Dans l'exemple suivant, nous remplacerons toutes les instances de ce ou Ce (Ignorer le cas) avec ça dans mon fichier.SMS, Et nous enregistrerons le fichier d'origine comme mon fichier.SMS.origine.
Enfin, nous utiliserons DIFF Utility pour identifier les différences entre les deux fichiers:
# sed -i '.orig "s / this / that / gi 'myfile.SMSUtilisez SED pour modifier et sauvegarder le fichier d'origine
12. Changer de paires de mots
Supposons que vous ayez un fichier contenant des noms complets dans le format Prénom, Nom de famille. Pour traiter adéquatement le fichier, vous voudrez peut-être changer Nom de famille et Prénom.
Nous pouvons faire ça avec sed Assez facilement:
# sed 'S / ^ \ (.* \), \ (.* \) $ / \, / g 'noms.SMSChanger de mots dans le fichier
Dans l'image ci-dessus, nous pouvons voir que les parenthèses, étant des caractères spéciaux, doivent être échappés, tout comme les chiffres 1 et 2.
Ces nombres représentent les expressions régulières en surbrillance (qui doivent apparaître à l'intérieur des parenthèses):
- 1 représente le début de chaque ligne jusqu'à la virgule.
- 2 est un espace réservé pour tout ce qui est juste de la virgule à la fin de la ligne.
La sortie souhaitée est indiquée dans le format Secondcolumn (Nom de famille) + virgule + espace + FirstColumn (Prénom). N'hésitez pas à le changer en tout ce que vous souhaitez.
13. Remplacement des mots uniquement si une correspondance distincte est trouvée
Parfois, remplacer toutes les instances d'un mot donné, ou quelques-uns aléatoires, n'est pas précisément ce dont nous avons besoin. Peut-être que nous devons effectuer le remplacement si une correspondance séparée est trouvée.
Par exemple, nous pouvons vouloir remplacer commencer avec arrêt Seulement si les services de mots se trouvent dans la même ligne. Dans ce scénario, voici ce qui se passera:
Nous devons commencer à faire la fête au travail, mais n'oublions pas de commencer tous les services d'abord.
Dans la première ligne, commencer ne sera pas remplacé par arrêt Puisque le Word Services n'apparaît pas dans cette ligne, par opposition à la deuxième ligne.
# sed '/ services / s / start / stop / g' msg.SMSRemplacer les mots dans le fichier
14. Effectuer deux ou plusieurs substitutions à la fois
Vous pouvez combiner deux substitutions ou plus un seul sed commande. Remplacement des mots et en ligne dans mon fichier.SMS avec ce et vers, respectivement.
Notez comment cela peut être fait en utilisant un ordinaire sed Commande de substitution suivie d'un point-virgule et d'une deuxième commande de substitution:
# sed -i's / that / this / gi; s / line / verse / gi 'myfile.SMS
Cette astuce est illustrée dans l'image suivante:
Remplacez plusieurs mots dans le fichier15. Combiner sed et autres commandes
Bien sûr, sed peut être combiné avec d'autres outils afin de créer des commandes plus puissantes. Par exemple, utilisons l'exemple donné dans Astuce n ° 4 et extraire notre adresse IP de la sortie du itinéraire IP
commande.
Nous commencerons par imprimer uniquement la ligne où le mot SRC
est. Ensuite, nous convertirons plusieurs espaces en un seul. Enfin, nous allons couper le 9e Champ (en considérant un seul espace comme séparateur de champ), où se trouve l'adresse IP:
# IP Route Show | sed -n '/ src / p' | sed -e 's / * / g' | coupe -d "-f9
L'image ci-dessous illustre chaque étape de la commande ci-dessus:
Combiner sed avec d'autres commandesRésumé
Dans ce guide, nous avons partagé 15 conseils et astuces SED Pour vous aider avec vos tâches quotidiennes d'administration du système. Y a-t-il un autre conseil que vous utilisez régulièrement et que vous souhaitez partager avec nous et le reste de la communauté?
Si c'est le cas, n'hésitez pas à nous faire savoir en utilisant le formulaire de commentaire ci-dessous. Les questions et les commentaires sont également les bienvenus - nous sommes impatients de vous entendre!
Ne manquez pas: Master la commande Linux 'Awk' avec des conseils et des astuces
- « Apprenez à utiliser les variables awk, les expressions numériques et les opérateurs d'affectation - Partie 8
- 9 Meilleurs outils de comparaison de fichiers et de différence (DIFF) pour Linux »