Explication détaillée de la commande Linux sed

Linux sed (Stream Editor) est un puissant outil de traitement de texte qui effectue des opérations telles que la recherche, le remplacement et l'édition de texte sur la ligne de commande. Le concept de conception de sed est de traiter le texte ligne par ligne. Il peut lire le texte d'entrée ligne par ligne et appliquer l'opération spécifiée, puis afficher le résultat.

La commande sed a une variété d'options et de fonctions. Ce qui suit présentera son utilisation courante et des exemples en détail.

  1. Remplacer le texte :
    utilisez s/old/new/un modèle pour implémenter une opération de remplacement qui remplace l'"ancienne" chaîne dans le texte d'entrée par la "nouvelle" chaîne. Par exemple:

    $ sed 's/foo/bar/' input.txt
    

    Cela remplacera toutes les occurrences de "foo" par "bar" dans le fichier input.txt.

    sed prend en charge la substitution globale, s/old/new/incluez simplement le drapeau après la première barre oblique dans le fichier g. Par exemple:

    $ sed 's/foo/bar/g' input.txt
    

    Cela remplacera toutes les occurrences de "foo" par "bar".

  2. Supprimer les lignes :
    utilisez dla commande pour supprimer les lignes correspondant à un motif. Par exemple:

    $ sed '/pattern/d' input.txt
    

    Cela supprimera toutes les lignes du fichier input.txt qui correspondent au motif "pattern".

  3. Insérer et ajouter du texte :
    utilisez ides commandes pour insérer du texte avant la ligne spécifiée et utilisez ades commandes pour ajouter du texte après la ligne spécifiée. Par exemple:

    $ sed '3i\This is line 3' input.txt
    

    Cela insérera le texte "Ceci est la ligne 3" avant la troisième ligne dans le fichier input.txt.

    $ sed '3a\This is line 4' input.txt
    

    Cela ajoutera le texte "Ceci est la ligne 4" après la troisième ligne du fichier input.txt.

  4. printtext :
    utilisez pla commande pour imprimer les lignes correspondant au motif. Par exemple:

    $ sed -n '/pattern/p' input.txt
    

    Cela imprimera toutes les lignes du fichier input.txt qui correspondent au motif "pattern".

    Si vous souhaitez imprimer toutes les lignes, vous pouvez utiliser la commande suivante :

    $ sed -n 'p' input.txt
    
  5. Édition de fichier :
    utilisez -il'option pour implémenter l'édition sur place, c'est-à-dire modifier directement le fichier source sans générer de nouveau fichier de sortie. Par exemple:

    $ sed -i 's/foo/bar/' input.txt
    

    Cela remplacera toutes les occurrences de "foo" par "bar" directement dans le fichier d'entrée input.txt.

  6. Spécifiez la plage de traitement :
    vous pouvez utiliser l'adresse de ligne pour spécifier la plage de traitement de la commande sed. Par exemple, en utilisant des nombres pour les numéros de ligne :

    $ sed '2,5d' input.txt
    

    Cela supprimera le contenu entre les deuxième et cinquième lignes du fichier input.txt.

    Vous pouvez également spécifier la plage de traitement à l'aide d'expressions régulières. Par exemple, pour traiter le texte entre "début" et "fin" :

    $ sed '/start/,/end/d' input.txt
    

    Cela supprimera le texte entre le motif correspondant "début" et "fin" dans le fichier input.txt.

  7. Commandes d'édition multiples :
    plusieurs commandes sed peuvent être regroupées à l'aide de points-virgules. Par exemple:

    $ sed 's/foo/bar/; s/abc/xyz/' input.txt
    

    Cela remplacera d'abord toutes les occurrences de "foo" dans le fichier input.txt par "bar", puis toutes les occurrences de "abc" par "xyz".

    Il est également possible d'écrire plusieurs commandes d'édition dans un fichier de script et -fde les exécuter avec des options. Par exemple, pour stocker les commandes d'édition dans un fichier script.sed :

    $ sed -f script.sed input.txt
    
  8. Spécifiez le numéro de ligne à opérer :
    Utilisez le numéro de ligne représenté par des nombres (tels que 1, 2, 3, etc.) pour spécifier la ligne à opérer. Par exemple, la commande suivante remplacera la deuxième chaîne "foo" dans le fichier input.txt :

    $ sed '2s/foo/bar/' input.txt
    
  9. Entre guillemets de caractères spéciaux :
    dans l'opération de remplacement, si vous souhaitez entre guillemets une chaîne contenant des caractères spéciaux, vous pouvez les échapper avec une barre oblique inverse. Par exemple, la commande pour remplacer "$100" par "$200" est la suivante :

    $ sed 's/\$100/\$200/' input.txt
    
  10. Correspondance et remplacement basés sur des expressions régulières :
    les expressions régulières peuvent être utilisées comme modèles de correspondance dans les commandes sed. Par exemple, pour remplacer toutes les lignes commençant par des chiffres par des lignes vides :

    $ sed 's/^[0-9].*$/ /' input.txt
    
  11. Afficher uniquement les lignes remplacées :
    utilisez l'option -n pour supprimer la sortie par défaut de sed, puis utilisez la commande p pour imprimer les lignes correspondantes. Par exemple, pour afficher uniquement les lignes après l'opération de remplacement :

    $ sed -n 's/foo/bar/p' input.txt
    
  12. Traiter plusieurs fichiers :
    utilisez plusieurs noms de fichiers comme paramètres de la commande sed pour traiter plusieurs fichiers par lots. Par exemple, pour remplacer toutes les occurrences de "foo" par "bar" dans les fichiers 1.txt et 2.txt :

    $ sed 's/foo/bar/' 1.txt 2.txt
    
  13. Correspondance de référence arrière :
    à l'aide de groupes de capture d'expressions régulières et de références arrière, vous pouvez utiliser le contenu correspondant dans l'opération de remplacement. Par exemple, pour remplacer "a123b" par "b123a" dans le fichier input.txt :

    $ sed 's/\(a\)\([0-9]\+\)\(b\)/\3\2\1/' input.txt
    
  14. Supprimer les lignes vides :
    utilisez la commande suivante pour supprimer les lignes vides dans un fichier :

    $ sed '/^\s*$/d' input.txt
    
  15. Exécuter le fichier de script :
    créez un fichier texte contenant les commandes sed et utilisez -fles options pour exécuter le fichier de script. Par exemple, pour stocker les commandes d'édition dans un fichier script.sed et exécuter :

    $ sed -f script.sed input.txt
    

Guess you like

Origin blog.csdn.net/u012581020/article/details/132086084