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.
- Lire une ligne entière depuis stdin/file.
- Supprime toute nouvelle ligne de fin.
- Place la ligne, dans son tampon de modèle.
- Modifiez le tampon de modèle en fonction des commandes fournies.
- 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