lundi 5 avril 2010

Concaténer des fichiers sous Linux

Concaténer facilement des fichiers à l'aide de quelques lignes de commandes et de Zenity.
Exemple de concaténation de listes noires d'adresses IP de sites web.

Airelle a mis à disposition plusieurs fichiers de type Hosts permettant de filtrer différents de type de sites de pub, pornographique, contenant des malawares, etc ... (voir ICI pour les listes ).
Il est toujours possible de réaliser des copier-coller à la main mais les listes sont longues et ça devient vite fastidieux  ...

Préambule : on suppose que tous les fichiers à concaténer sont dans un même répertoire.

On utilise la commande sort (tri) associé à l'option -u (unique)
sort -u fichier1 fichier2 fichier3 >> fichier_final


Exemple pratique avec les fichiers hosts d'Airelle sous forme d'un script bash

#!/bin/bash
# On crée la première ligne du fichier qui doit définir le localhost
echo "127.0.0.1    localhost" > hosts
# Utilisation de d'une boite de dialogue Zenity pour constituer la liste des fichiers à concaténer qui sont de la forme Hosts.*.
choix=`ls Hosts.* | sort -f | zenity --list --multiple --title="Choix des fichiers à concaténer" --text="choisissez les fichiers à concaténer" --column="Fichier Hosts" --separator=" " --width=530 --height=380`
# Tri sans doublon et remplacement de l'espace par une tabulation
sort -u $choix | sed 's/ /\t/g' >> hosts
exit

Et voilà un fichier hosts tout beau, tout neuf prêt à l'emploi, rapidement constitué et sans effort.

Aucun commentaire:

Enregistrer un commentaire