#1 Le 14/03/2017, à 13:01
- Numalemanu
Pb sed et suppression de multiples lignes simultanèment
Bonjour à tous!
J'ai un gros fichier de logs de 49Go.
J'ai créé un petit fichier contenant une liste d'adresse IP.
Je souhaite supprimer du fichier de logs toutes lignes qui contiennent des IP présentes dans ma liste.
J'ai fait ça:
while read i
do
sed "/$i/d" fichier_de_logs
done < /var/log/fortigate/liste_ip
Et je le lance:
./mon_script > resultat
Problème: sed prend la 1ère IP du fichier et me met dans resulat le fichier de logs moins les lignes contenant cette IP, puis prend la 2ème IP du fichier et me met dans résultat le fichiers de logs moins les lignes contenant cette 2ème IP et ainsi de suite...c'est le bordel.
Comment faire en sorte qu'il mette dans resultat le fichier de log moins toutes les lignes contenant les IP de la liste?
Merci pour vos réponses.
Hors ligne
#2 Le 14/03/2017, à 13:16
- Laurent85
Re : Pb sed et suppression de multiples lignes simultanèment
Fais le contraire, duplique le fichier de log, appelle le resultat et supprime de résultat les ip avec l'option -i de sed:
sed -i "/$i/d" resultat
Hors ligne
#3 Le 14/03/2017, à 13:51
- MicP
Re : Pb sed et suppression de multiples lignes simultanèment
Bonjour
En rassemblant les adresses IP dans une variable, un seul sed pourrait suffire
unset varPourSed
while read ip
do
printf -v varPourSed "$varPourSed%s\\\|" $ip
done < /var/log/fortigate/liste_ip
sed -i "/${varPourSed::-2}/d" fichier_de_logs
Contenu de ${varPourSed::-2} : 192.168.122.1\|192.168.122.5\|102.198.12.5
Mais je ne sais pas comment sont "rangées" les adresses IP dans le fichier /var/log/fortigate/liste_ip
alors il faudra peut-être revoir while read
Dernière modification par MicP (Le 14/03/2017, à 14:38)
Hors ligne
#4 Le 14/03/2017, à 14:36
- Watael
Re : Pb sed et suppression de multiples lignes simultanèment
salut,
pourquoi torturez-vous la ligne de commande ?
grep -vf liste_ip fichier.log >resultat
une boucle for itère sur les éléments d'une liste :
$ for ip in /chemin/fichier; do echo $ip; done
/chemin/fichier
!
Dernière modification par Watael (Le 14/03/2017, à 14:37)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#5 Le 14/03/2017, à 14:46
- MicP
Re : Pb sed et suppression de multiples lignes simultanèment
Bonjour Watael
…une boucle for itère sur les éléments d'une liste :…
Oui, j'étais juste en train de remplacer le for in par un while read quand tu as posté ton message.
========
Va falloir que je lise un peu mieux les manpages, en particulier celle de grep.
Hors ligne
#6 Le 17/03/2017, à 14:51
- Numalemanu
Re : Pb sed et suppression de multiples lignes simultanèment
Merci pour vos réponses.
Les commandes de MicP Et Watael fonctionnent bien, mais le script s'interrompt très rapidement alors qu'il a à peine commencé le travail.
Y a-t-il une limite à la taille de ma liste d'IP ou à la taille du fichier à traiter qui empêcherait le script de continuer?
Dernière modification par Numalemanu (Le 17/03/2017, à 14:51)
Hors ligne