Parcourir un fichier
Résolu/Fermé
othmane19
Messages postés
96
Date d'inscription
Statut
Membre
Dernière intervention
-
zipe31 Messages postés 36402 Date d'inscription Statut Contributeur Dernière intervention -
zipe31 Messages postés 36402 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
je suis bloqué dans un truc et j 'espaire avoir votre aide :
en faisant le parcours des ligne d'un fcihier je veux qui'il m'affiche les lignes au fonction d'un criter dans la ligne elle mémé.
voila le script
cat file | while read ligne
do
b=$(tr " " ":"|cut -d: -f4) //exraire un numero dans la ligne
if [ $b -gt 1 ]//si ce num extrait est sup a 1 afficher la ligne
then
echo "$ligne";
fi
done
le probleme c'est que il prend pas en compte la comparaison, du coup il m'affiche aucune ligne
merci de votre aide d'avance.
je suis bloqué dans un truc et j 'espaire avoir votre aide :
en faisant le parcours des ligne d'un fcihier je veux qui'il m'affiche les lignes au fonction d'un criter dans la ligne elle mémé.
voila le script
cat file | while read ligne
do
b=$(tr " " ":"|cut -d: -f4) //exraire un numero dans la ligne
if [ $b -gt 1 ]//si ce num extrait est sup a 1 afficher la ligne
then
echo "$ligne";
fi
done
le probleme c'est que il prend pas en compte la comparaison, du coup il m'affiche aucune ligne
merci de votre aide d'avance.
A voir également:
- Parcourir un fichier
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
14 réponses
merci pour ta reponse
voila en fait les lignes du fichier, dnc le but je voulais aficher les discover d'un serveur DHCP apres un time donne dnc a chaque fois je compare le time (ex:15:00) avec le time actuel
pour l'instant pour faire simple je compare juste avec 1 histoire de tester le fonctionnent
merci d'avance
Apr::4:15:00:11:BABALLE-01:dhcpd::DHCPDISCOVER:from:17:20:d2:2b:f6:1a:via:10.10.11.1
10
Apr::4:20:00:11:BABALLE-01:dhcpd::DHCPDISCOVER:from:15:20:d2:2b:f6:1a:via:10.10.11.1
10
Apr::4:11:00:11:BABALLE-01:dhcpd::DHCPDISCOVER:from:15:20:d2:2b:f6:1a:via:10.10.11.1
10
Apr::4:17:00:11:BABALLE-01:dhcpd::DHCPDISCOVER:from:15:20:d2:2b:f6:1a:via:10.10.11.1
10
Apr::4:77:00:11:BABALLE-01:dhcpd::DHCPDISCOVER:from:15:20:d2:2b:f6:1a:via:10.10.11.1
voila en fait les lignes du fichier, dnc le but je voulais aficher les discover d'un serveur DHCP apres un time donne dnc a chaque fois je compare le time (ex:15:00) avec le time actuel
pour l'instant pour faire simple je compare juste avec 1 histoire de tester le fonctionnent
merci d'avance
Apr::4:15:00:11:BABALLE-01:dhcpd::DHCPDISCOVER:from:17:20:d2:2b:f6:1a:via:10.10.11.1
10
Apr::4:20:00:11:BABALLE-01:dhcpd::DHCPDISCOVER:from:15:20:d2:2b:f6:1a:via:10.10.11.1
10
Apr::4:11:00:11:BABALLE-01:dhcpd::DHCPDISCOVER:from:15:20:d2:2b:f6:1a:via:10.10.11.1
10
Apr::4:17:00:11:BABALLE-01:dhcpd::DHCPDISCOVER:from:15:20:d2:2b:f6:1a:via:10.10.11.1
10
Apr::4:77:00:11:BABALLE-01:dhcpd::DHCPDISCOVER:from:15:20:d2:2b:f6:1a:via:10.10.11.1
merci pour la reponse juste par rapport a mon script je mets la ligne que t indiqué ou exactement
dans la boucle?
merci
dans la boucle?
merci
ah bon j'ai compris
je pense que c'est bon ca fait bien ce que je veux, juste une dernier question je cherche a ecrire les ligne touvé dans un fichier a part
j espaire que t une idée?
merci
je pense que c'est bon ca fait bien ce que je veux, juste une dernier question je cherche a ecrire les ligne touvé dans un fichier a part
j espaire que t une idée?
merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ben la reponse est simple il falut juste faire
awk -F':' ' $4 > 20 { print }' yes>testfinale
franchement merci beaucoup
awk -F':' ' $4 > 20 { print }' yes>testfinale
franchement merci beaucoup
Bonjour,
comment je peux extraire que les adresse MAC ayant free comme state, je sais que je doit passer par des grep et cut et tr,mais je vois pas trop comment faire
si vous avez une idéé sur comment faire
merci d'avance de votre aide
voila l'xemple du fichier:
lease 192.168.100.2 {
starts 1 2012/04/02 09:54:36;
ends 1 2012/04/02 09:55:48;
tstp 1 2012/04/02 09:55:48;
cltt 1 2012/04/02 09:54:36;
binding state free;
hardware ethernet 00:14:22:c3:38:53;
uid "\001\000\024\"\3038S";
}
lease 192.168.100.14 {
starts 3 2012/04/04 14:35:26;
ends 3 2012/04/04 14:36:38;
cltt 3 2012/04/04 14:35:26;
binding state active;
next binding state free;
hardware ethernet 00:20:d2:2b:f6:1a;
}
lease 192.168.100.14 {
starts 3 2012/04/04 14:36:02;
ends 3 2012/04/04 14:37:14;
cltt 3 2012/04/04 14:36:02;
binding state active;
next binding state free;
hardware ethernet 00:20:d2:2b:f6:1a;
}
Configuration: Linux / Firefox 3.5.3
comment je peux extraire que les adresse MAC ayant free comme state, je sais que je doit passer par des grep et cut et tr,mais je vois pas trop comment faire
si vous avez une idéé sur comment faire
merci d'avance de votre aide
voila l'xemple du fichier:
lease 192.168.100.2 {
starts 1 2012/04/02 09:54:36;
ends 1 2012/04/02 09:55:48;
tstp 1 2012/04/02 09:55:48;
cltt 1 2012/04/02 09:54:36;
binding state free;
hardware ethernet 00:14:22:c3:38:53;
uid "\001\000\024\"\3038S";
}
lease 192.168.100.14 {
starts 3 2012/04/04 14:35:26;
ends 3 2012/04/04 14:36:38;
cltt 3 2012/04/04 14:35:26;
binding state active;
next binding state free;
hardware ethernet 00:20:d2:2b:f6:1a;
}
lease 192.168.100.14 {
starts 3 2012/04/04 14:36:02;
ends 3 2012/04/04 14:37:14;
cltt 3 2012/04/04 14:36:02;
binding state active;
next binding state free;
hardware ethernet 00:20:d2:2b:f6:1a;
}
Configuration: Linux / Firefox 3.5.3
Salut,
;-))
$ cat brol lease 192.168.100.2 { starts 1 2012/04/02 09:54:36; ends 1 2012/04/02 09:55:48; tstp 1 2012/04/02 09:55:48; cltt 1 2012/04/02 09:54:36; binding state free; hardware ethernet 00:14:22:c3:38:53; uid "\001\000\024\"\3038S"; } lease 192.168.100.14 { starts 3 2012/04/04 14:35:26; ends 3 2012/04/04 14:36:38; cltt 3 2012/04/04 14:35:26; binding state active; next binding state free; hardware ethernet 00:20:d2:2b:f6:1a; } lease 192.168.100.14 { starts 3 2012/04/04 14:36:02; ends 3 2012/04/04 14:37:14; cltt 3 2012/04/04 14:36:02; binding state active; next binding state free; hardware ethernet 00:20:d2:2b:f6:1a; } $ sed -n '/^binding state free/{n;p}' brol hardware ethernet 00:14:22:c3:38:53; $
;-))
salut
merci pour ton aide
je remplace bien le nom de fichier, mais la commande n'affiche rien en fait
merci d'avance
merci pour ton aide
je remplace bien le nom de fichier, mais la commande n'affiche rien en fait
merci d'avance
Il n'y aurait pas des tabulations en début de lignes ???
Mets un exemple du contenu de ton fichier entre les balises <code></code>, comme ceci :
Ce qui donnera ceci :
Mets un exemple du contenu de ton fichier entre les balises <code></code>, comme ceci :
<code>lease 192.168.100.2 { starts 1 2012/04/02 09:54:36; ends 1 2012/04/02 09:55:48; tstp 1 2012/04/02 09:55:48; cltt 1 2012/04/02 09:54:36; binding state free; hardware ethernet 00:14:22:c3:38:53; uid "\001\000\024\"\3038S"; }</code>
Ce qui donnera ceci :
lease 192.168.100.2 { starts 1 2012/04/02 09:54:36; ends 1 2012/04/02 09:55:48; tstp 1 2012/04/02 09:55:48; cltt 1 2012/04/02 09:54:36; binding state free; hardware ethernet 00:14:22:c3:38:53; uid "\001\000\024\"\3038S"; }
mais vue que moi je peux pas ajouter cette balise dans mon fichier tu pense
qui il aurait d'autre moyen pour avoir les adresse MAC qui sont free
merci d'avance
qui il aurait d'autre moyen pour avoir les adresse MAC qui sont free
merci d'avance
Je parlais de l'affichage ici sur le forum ;-\
Si ton fichier contient des tabulations et que tu fais un copier/coller ici sur le forum sans te servir des balises (voir ce tutoriel), on ne le verra pas ;-(
Ou alors, mets une copie de ton fichier en téléchargement sur Cjoint.
Si ton fichier contient des tabulations et que tu fais un copier/coller ici sur le forum sans te servir des balises (voir ce tutoriel), on ne le verra pas ;-(
Ou alors, mets une copie de ton fichier en téléchargement sur Cjoint.
pour l'info c'est le fichier lease du DHCP qui affiche les adresses libérées
en fait ce qui se passe avec cette solution c'est qu'on j'ajoute une autre adresse MAC avec un state free dans le fichier:
lease 192.168.100.14 {
starts 3 2012/04/04 14:36:02;
ends 3 2012/04/04 14:37:14;
cltt 3 2012/04/04 14:36:02;
binding state free;
next binding state free;
hardware ethernet 44:20:d2:2b:f6:1a;
}
il m'affiche:
hardware ethernet 00:14:22:c3:38:53;
next binding state free;
donc la solution n'est pas fiable
merci d'avance pour ta reponse
en fait ce qui se passe avec cette solution c'est qu'on j'ajoute une autre adresse MAC avec un state free dans le fichier:
lease 192.168.100.14 {
starts 3 2012/04/04 14:36:02;
ends 3 2012/04/04 14:37:14;
cltt 3 2012/04/04 14:36:02;
binding state free;
next binding state free;
hardware ethernet 44:20:d2:2b:f6:1a;
}
il m'affiche:
hardware ethernet 00:14:22:c3:38:53;
next binding state free;
donc la solution n'est pas fiable
merci d'avance pour ta reponse
$ cat fichier lease 192.168.100.14 { starts 3 2012/04/04 14:36:02; ends 3 2012/04/04 14:37:14; cltt 3 2012/04/04 14:36:02; binding state free; next binding state free; hardware ethernet 44:20:d2:2b:f6:1a; } $ $ awk -F"[ ;]" '/^binding state free/{x=1} /hardware/ && x {print $3;x=0}' fichier 44:20:d2:2b:f6:1a $
Bonjour,
je voulais afficher que les lignes dont leur time est supérieur a un time donné
voila le fichier:
Apr++4+10.10.11+BABALLE-01+dhcpd.+DHCPDISCOVER+from+13.20.d2.2b.f6.1a+via+10.10.11.1
Apr++4+09.31.11+BABALLE-01+dhcpd.+DHCPDISCOVER+from+19.20.d2.2b.f6.1a+via+10.10.11.1
Apr++4+11.10.11+BABALLE-01+dhcpd.+DHCPDISCOVER+from+13.20.d2.2b.f6.1a+via+10.10.11.1
Apr++4+09.10.11+BABALLE-01+dhcpd.+DHCPDISCOVER+from+13.20.d2.2b.f6.1a+via+10.10.11.1
Apr++4+07.45.11+BABALLE-01+dhcpd.+DHCPDISCOVER+from+13.20.d2.2b.f6.1a+via+10.10.11.1
quand j'essaie avec cette commande:
awk -F'+' ' $4 > 10 { print }' tg
j'ai cette affichage ce qui est bien
Apr++4+10.10.11+BABALLE-01+dhcpd.+DHCPDISCOVER+from+13.20.d2.2b.f6.1a+via+10.10.11.1
Apr++4+11.10.11+BABALLE-01+dhcpd.+DHCPDISCOVER+from+13.20.d2.2b.f6.1a+via+10.10.11.1
mais quand j'essaie d'afficher les ligne avec un time supérieur a 7.00(par exemple)
awk -F'+' ' $4 > 7.00 { print }' tg
il affiche rien.
je voulais savoir c'est quoi le problème.
merci d'avance de votre aide et de votre compréhension
je voulais afficher que les lignes dont leur time est supérieur a un time donné
voila le fichier:
Apr++4+10.10.11+BABALLE-01+dhcpd.+DHCPDISCOVER+from+13.20.d2.2b.f6.1a+via+10.10.11.1
Apr++4+09.31.11+BABALLE-01+dhcpd.+DHCPDISCOVER+from+19.20.d2.2b.f6.1a+via+10.10.11.1
Apr++4+11.10.11+BABALLE-01+dhcpd.+DHCPDISCOVER+from+13.20.d2.2b.f6.1a+via+10.10.11.1
Apr++4+09.10.11+BABALLE-01+dhcpd.+DHCPDISCOVER+from+13.20.d2.2b.f6.1a+via+10.10.11.1
Apr++4+07.45.11+BABALLE-01+dhcpd.+DHCPDISCOVER+from+13.20.d2.2b.f6.1a+via+10.10.11.1
quand j'essaie avec cette commande:
awk -F'+' ' $4 > 10 { print }' tg
j'ai cette affichage ce qui est bien
Apr++4+10.10.11+BABALLE-01+dhcpd.+DHCPDISCOVER+from+13.20.d2.2b.f6.1a+via+10.10.11.1
Apr++4+11.10.11+BABALLE-01+dhcpd.+DHCPDISCOVER+from+13.20.d2.2b.f6.1a+via+10.10.11.1
mais quand j'essaie d'afficher les ligne avec un time supérieur a 7.00(par exemple)
awk -F'+' ' $4 > 7.00 { print }' tg
il affiche rien.
je voulais savoir c'est quoi le problème.
merci d'avance de votre aide et de votre compréhension
avec $4 =10.10.11, ilne doit pas traiter ça comme une valeur numérique
$ awk -F'+' ' strtonum($4) > 7 { print }' tg Apr++4+10.10.11+BABALLE-01+dhcpd.+DHCPDISCOVER+from+13.20.d2.2b.f6.1a+via+10.10.11.1 Apr++4+09.31.11+BABALLE-01+dhcpd.+DHCPDISCOVER+from+19.20.d2.2b.f6.1a+via+10.10.11.1 Apr++4+11.10.11+BABALLE-01+dhcpd.+DHCPDISCOVER+from+13.20.d2.2b.f6.1a+via+10.10.11.1 Apr++4+09.10.11+BABALLE-01+dhcpd.+DHCPDISCOVER+from+13.20.d2.2b.f6.1a+via+10.10.11.1 Apr++4+07.45.11+BABALLE-01+dhcpd.+DHCPDISCOVER+from+13.20.d2.2b.f6.1a+via+10.10.11.1 $ $ $ awk -F'+' ' strtonum($4) > 10 { print }' tg Apr++4+10.10.11+BABALLE-01+dhcpd.+DHCPDISCOVER+from+13.20.d2.2b.f6.1a+via+10.10.11.1 Apr++4+11.10.11+BABALLE-01+dhcpd.+DHCPDISCOVER+from+13.20.d2.2b.f6.1a+via+10.10.11.1 $
merci pour ta reponse
je pense que pour l'instant c'est bon
mais j'ai pas compris le rôle de la fonction strtonum?
merci d'avance de ton aide
je pense que pour l'instant c'est bon
mais j'ai pas compris le rôle de la fonction strtonum?
merci d'avance de ton aide
Salut,
Ça convertit une chaîne en nombre : http://www.gnu.org/software/gawk/manual/gawk.html#Strtonum-Function
Ça convertit une chaîne en nombre : http://www.gnu.org/software/gawk/manual/gawk.html#Strtonum-Function