15 Conseils et astuces de commande «SED» utiles pour les tâches quotidiennes d'administration du système Linux

15 Conseils et astuces de commande «SED» utiles pour les tâches quotidiennes d'administration du système Linux

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 Linux

Dans 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:

Remplacer les mots ou les caractères dans le fichier

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 fichier

Cette 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.SMS 
Fichiers 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.SMS 
Utilisez 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.SMS 
Changer 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. 1 représente le début de chaque ligne jusqu'à la virgule.
  2. 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.SMS 
Remplacer 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 fichier

15. 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 commandes

Ré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