GNU/Linux >> Tutoriels Linux >  >> Linux

Tutoriel Unix Sed :Impression de lignes de fichier à l'aide d'adresses et de modèles

Voyons comment imprimer des lignes de fichier en utilisant l'adresse et les modèles dans cette première partie du tutoriel sed.

Nous publierons plusieurs tutoriels sed géniaux avec des exemples dans les semaines à venir.

Introduction à Unix Sed

  • sed est un éditeur orienté flux "non interactif". Comme il s'agit d'un "non interactif", il peut être utilisé pour automatiser l'édition si vous le souhaitez.
  • Le nom sed est une abréviation pour l'éditeur de flux, et l'utilitaire tire bon nombre de ses commandes de l'éditeur de ligne ed (ed était le premier éditeur de texte UNIX).
  • Cela vous permet d'éditer plusieurs fichiers ou d'effectuer des opérations d'édition courantes sans jamais avoir à ouvrir vi ou emacs.
  • sed lit à partir d'un fichier ou de son entrée standard, et sort sur sa sortie standard.
  • sed a deux tampons appelés tampon de motif et tampon de maintien. Les deux sont initialement vides.

Méthodologie de travail Unix Sed

C'est ce qu'on appelle un cycle d'exécution. Le cycle continue jusqu'à ce que la fin du fichier/de l'entrée soit atteinte.

  1. Lire une ligne entière depuis stdin/file.
  2. Supprime toute nouvelle ligne de fin.
  3. Place la ligne, dans son tampon de modèle.
  4. Modifiez le tampon de modèle en fonction des commandes fournies.
  5. Imprime le tampon de modèle sur stdout.

Opération d'impression en Sed

La commande Linux Sed vous permet d'imprimer uniquement des lignes spécifiques en fonction du numéro de ligne ou des correspondances de motifs. "p" est une commande pour imprimer les données du tampon de modèle.

Pour supprimer l'impression automatique de l'espace de motif, utilisez la commande -n avec sed. L'option sed -n n'imprimera rien, sauf si une demande explicite d'impression est trouvée.

Syntax:
# sed -n 'ADDRESS'p filename

# sed -n '/PATTERN/p' filename

Créons d'abord le fichier geekstuff.txt qui sera utilisé dans tous les exemples mentionnés ci-dessous.

# cat thegeekstuff.txt
1. Linux - Sysadmin, Scripting etc.
2. Databases - Oracle, mySQL etc.
3. Hardware
4. Security (Firewall, Network, Online Security etc)
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)
8. Website Design
9. Software Development
10.Windows- Sysadmin, reboot etc.

5 exemples de format d'ADRESSE Sed

Format d'adresse sed 1 : NUMÉRO

Cela ne correspondra qu'à la Nième ligne dans l'entrée.

# sed -n 'N'p filename

Par exemple, 3p imprime la troisième ligne du fichier d'entrée thegeekstuff.txt comme indiqué ci-dessous.

# sed -n '3'p thegeekstuff.txt
3. Hardware

Format d'adresse Sed 2 :NUMBER1~NUMBER2

M~N avec la commande "p" imprime chaque Nième ligne à partir de la ligne M.

# sed -n ‘M~N’p filename

Par exemple, 3~2p imprime toutes les 2e lignes à partir de la 3e ligne comme indiqué ci-dessous.

# sed -n '3~2'p thegeekstuff.txt
3. Hardware
5. Storage
7. Productivity (Too many technologies to explore, not much time available)
9. Software Development

Format d'adresse sed 3 :DÉBUT, FIN

M,N avec la commande "p" imprime la Mème ligne à la Nème ligne.

# sed -n 'M,N'p nom de fichier

Par exemple, 4,8p imprime de la 4ème à la 8ème ligne du fichier d'entrée thegeekstuff.txt

# sed -n '4,8'p thegeekstuff.txt
4. Security (Firewall, Network, Online Security etc)
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)
8. Website Design

Format d'adresse Sed 4 :"$" dernière ligne

$ avec la commande "p" correspond uniquement à la dernière ligne de l'entrée.

# sed -n '$'p filename

Par exemple, $p n'imprime que la dernière ligne comme indiqué ci-dessous.

# sed -n '$'p thegeekstuff.txt
10.Windows- Sysadmin, reboot etc.

Format d'adresse Sed 5 :NUMBER,$

N,$ avec la commande "p" imprime de la Nième ligne à la fin du fichier.

# sed -n 'N,$p' nom du fichier

Par exemple 4,$p imprime de la 4ème ligne à la fin du fichier.

# sed -n '4,$p' thegeekstuff.txt
4. Security (Firewall, Network, Online Security etc)
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)
8. Website Design
9. Software Development
10.Windows- Sysadmin, reboot etc.

6 exemples de format Sed PATTERN

Format de motif Sed 1 :MOTIF

PATTERN pourrait être une expression régulière Unix. La commande ci-dessous imprime uniquement la ligne qui correspond au modèle donné.

# sed -n /PATTERN/p filename

Par exemple, suivre imprime uniquement la ligne qui correspond au modèle "Sysadmin".

# sed -n /Sysadmin/p thegeekstuff.txt
1. Linux - Sysadmin, Scripting etc.
10.Windows- Sysadmin, reboot etc.

Format de modèle Sed 2 :/MODÈLE/,ADRESSE


# sed -n ‘/PATTERN/,Np’ nom de fichier

Par exemple, suivre imprime les lignes qui correspondent au motif à la Nième ligne, à partir de l'entrée. La 3ème ligne correspond au modèle "Matériel", donc elle s'imprime de la 3ème à la 6ème ligne.

# sed -n '/Hardware/,6p' thegeekstuff.txt
3. Hardware
4. Security (Firewall, Network, Online Security etc)
5. Storage
6. Cool gadgets and websites

Format de motif Sed 3 :ADRESSE,/MODÈLE/

Il imprime à partir de la nième ligne de l'entrée, jusqu'à la ligne qui correspond au motif. Si le motif ne correspond pas, il s'imprime jusqu'à la fin de l'entrée.

# sed -n ‘N,/PATTERN/p’ filename

Par exemple, la 4ème ligne correspond au modèle "Sécurité", donc elle s'imprime de la 3ème à la 4ème ligne.

# sed -n '3,/Security/p' thegeekstuff.txt
3. Hardware
4. Security (Firewall, Network, Online Security etc)

Format de modèle Sed 4 :/MODÈLE/,$

Il imprime à partir de la ligne correspondant au motif donné jusqu'à la fin du fichier.

# sed -n '/PATTERN/,$p' filename

# sed -n '/Website/,$p' thegeekstuff.txt
8. Website Design
9. Software Development
10.Windows- Sysadmin, reboot etc.

Format de motif Sed 5 :/MODÈLE/,+N

Il imprime les lignes qui correspondent au motif et les N lignes suivantes suivant la ligne correspondante.

# sed -n ‘/PATTERN/,+Np’ filename

Par exemple, suivre imprime la 5ème ligne qui correspond au modèle /Storage/ et les deux lignes suivantes après /Storage/.

# sed -n '/Storage/,+2p' thegeekstuff.txt
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)

Format de motif Sed 6 :/MODÈLE/,/MODÈLE/

Imprime la section du fichier entre deux expressions régulières (y compris la ligne correspondante).

# sed -n ‘/P1/,/P2/p’ filename

Par exemple, la 5ème ligne correspond à "Stockage" et la 8ème ligne correspond à "Design", donc elle imprime de la 5ème à la 8ème.

# sed -n '/Storage/,/Design/p' thegeekstuff.txt
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)
8. Website Design

Linux
  1. Utilisation de sed pour rechercher et remplacer des fichiers texte sous Linux

  2. Extraire la valeur entre deux modèles de recherche sur la même ligne ?

  3. Remplacer une ligne par un autre contenu en utilisant Sed et Parallel pour un gros fichier ?

  4. Supprimer la ligne contenant une certaine chaîne et la ligne suivante ?

  5. Rechercher et remplacer du texte dans un fichier entre une plage de lignes à l'aide de sed

Comment supprimer des lignes vides dans des fichiers à l'aide de Grep, Sed et Awk

Tutoriel Unix Sed :Rechercher et remplacer du texte dans un fichier à l'aide de RegEx

Tutoriel Unix Sed :Supprimer des lignes de fichier à l'aide d'adresses et de modèles

Tutoriel Unix Sed :comment écrire dans un fichier à l'aide de Sed

Tutoriel Unix Sed :ajouter, insérer, remplacer et compter les lignes de fichiers

Tutoriel Unix Sed :Opération de fichiers multilignes avec 6 exemples pratiques