Pipelining : les sites dans les fichiers de votre distribution Linux

Pipelining : les sites dans les fichiers de votre distribution LinuxJe viens d’achever une formation de 3 jours à l’administration des systèmes Linux à Caen. Je voulais hier illustrer le pipelining, avec Laurent. Cette technique singulière consiste, sur une même ligne à exécuter une commande avec le résultat de la commande précédente, en les séparant avec un pipe |. Cette technique présente dans les shells Unix / Linux  et notamment le Bash a été reprise dans les commandes de l’interpréteur Dos, Windows et maintenant dans le PowerShell.

Extraction des urls présentes dans les fichiers texte de votre distribution Linux

Il faut d’abord effectuer la recherche de fichiers par find :

find / -type f ...

Ensuite, nous devons déterminer s’il s’agit de fichiers textes en passant le nom de fichier à la commande file via xargs :

... | xargs file ...

Puis, nous sélectionnons les seuls fichiers textes avec grep :

... | grep text ...

Nous prenons le nom de fichier situé devant le séparateur qui se trouve être le point-virgule. Nous prenons la 1ère colonne avec la commande cut :

... | cut -d ':'  -f 1 ...

Avec la commande sed, nous extrayons les urls :

... |xargs sed -r 's|^.*(https?://[^/\*\[@", ]+).*$|\1|p;g;d' ...

Nous procédons ensuite au tri, en retirant au passage les doublons avec sort :

... | sort -u ...

Pour rediriger cette commande dans un fichier texte, il suffit de préciser à la fin de la commande :

... > /home/urls.txt

Ce qui donne à la fin, sur une ligne :

find / -type f|xargs file|grep text|cut -d ':' -f 1|xargs sed -r 's|^.*(https?://[^/\*\[@", ]+).*$|\1|p;g;d'|sort -u > /home/urls.txt

Votre exercice

Votre exercice consiste à extraire désormais tous les mails présents dans les fichiers de votre distribution Linux. A vous de jouer !

Linux  / Bash Formateur Bash Formateur Linux Formateur Powershell Formateur Shell Linux Linux Pipelining PowerShell Shell Linux 

Commentaires

Pas encore de commentaire.

Laisser un commentaire

(requis)

(requis)