[SHELL] isoler 2 valeurs dans un fichier
Résolu/Fermé
meelooz
-
25 août 2010 à 14:15
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 25 août 2010 à 15:11
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 25 août 2010 à 15:11
A voir également:
- [SHELL] isoler 2 valeurs dans un fichier
- Fichier rar - Guide
- Fichier host - Guide
- Fichier iso - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
6 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 895
25 août 2010 à 15:03
25 août 2010 à 15:03
[jp@MDK-2010 tmpfs]$ cat plop lease 192.168.1.2 { starts 3 2010/08/18 13:18:56; ends 3 2010/08/18 13:28:56; tstp 3 2010/08/18 13:28:56; cltt 3 2010/08/18 13:18:56; binding state free; hardware ethernet f4:cf:44:9b:51:b6; uid "\001\364\316F\232Q\266"; lease 192.168.1.3 { starts 3 2010/08/18 13:18:56; ends 3 2010/08/18 13:28:56; tstp 3 2010/08/18 13:28:56; cltt 3 2010/08/18 13:18:56; binding state free; hardware ethernet f4:ce:36:8c:de:b6; uid "\001\345\306A\252Q\279"; [jp@MDK-2010 tmpfs]$ egrep 'lease|ethernet' plop | egrep -o '([0-9]{1,3}\.){3}[0-9]{1}|([[:alnum:]]{2}:){5}[[:alnum:]]{2}' | sed 'N;s/\n/ /' 192.168.1.2 f4:cf:44:9b:51:b6 192.168.1.3 f4:ce:36:8c:de:b6 [jp@MDK-2010 tmpfs]$
;-))
dubcek
Messages postés
18718
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
22 mars 2024
5 615
25 août 2010 à 15:05
25 août 2010 à 15:05
hello
avec awk
avec awk
$ awk -F"[ ;]*" '/^lease/ {l=$2} ; /^hardware/ {print l, $3}' fichier 192.168.1.2 f4:cf:44:9b:51:b6 192.168.1.3 f4:ce:36:8c:de:b6 $
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 895
25 août 2010 à 14:21
25 août 2010 à 14:21
Salut,
Pour gagner du temps, quel est actuellement la sortie que tu obtiens ?
Pour gagner du temps, quel est actuellement la sortie que tu obtiens ?
Bonjour jipicy,
pour l'instant avec grep et awk j'obtiens toutes les IP ou toutes les @MAC, je n'arrive pas isoler le couple, dès le premier grep c'est fichu forcement, jessaie en lisant de la doc sur sed de supprimer toutes les lignes ne commençant pas par lease ou hardware.
cat dhcpd.leases | sed '/^lease\|^hardware/!d' mais ça ne marche pas, je dois mal m'y prendre, je continue à chercher de mon coté, merci en tout cas de t'interesser à mon problème :)
pour l'instant avec grep et awk j'obtiens toutes les IP ou toutes les @MAC, je n'arrive pas isoler le couple, dès le premier grep c'est fichu forcement, jessaie en lisant de la doc sur sed de supprimer toutes les lignes ne commençant pas par lease ou hardware.
cat dhcpd.leases | sed '/^lease\|^hardware/!d' mais ça ne marche pas, je dois mal m'y prendre, je continue à chercher de mon coté, merci en tout cas de t'interesser à mon problème :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bon j'avance, avec : cat dhcpd.leases | grep -E '(lease|hardware)' j'arrive deja a isoler les 2 lignes, j'ai une sortie du genre :
lease 192.168.2.3 {
hardware ethernet 00:1c:f0:f9:93:28;
lease 192.168.5.20 {
hardware ethernet 00:19:db:e7:6e:25;
lease 192.168.2.3 {
hardware ethernet 00:1c:f0:f9:93:28;
lease 192.168.5.20 {
hardware ethernet 00:19:db:e7:6e:25;
wow !!! merci jipicy!
moi j'étais un train de bricoler un truc super crade genre :
sed -e "s/hardware\ ethernet//" -e "s/lease\ //" -e "s/\ {//" -e "s/;//" pour avoir mes 2 valeurs meme pas sur la meme ligne.
la partie : egrep -o '([0-9]{1,3}\.){3}[0-9]{1}|([[:alnum:]]{2}:){5}[[:alnum:]]{2}'
j'ai pas du tout compris, je vais lire le man parceque j'etais tres loin du compte.
En tout cas un grand merci, le resultat est là et j'ai appris des choses.
moi j'étais un train de bricoler un truc super crade genre :
sed -e "s/hardware\ ethernet//" -e "s/lease\ //" -e "s/\ {//" -e "s/;//" pour avoir mes 2 valeurs meme pas sur la meme ligne.
la partie : egrep -o '([0-9]{1,3}\.){3}[0-9]{1}|([[:alnum:]]{2}:){5}[[:alnum:]]{2}'
j'ai pas du tout compris, je vais lire le man parceque j'etais tres loin du compte.
En tout cas un grand merci, le resultat est là et j'ai appris des choses.
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 895
25 août 2010 à 15:11
25 août 2010 à 15:11
La solution de dubcek est bien plus simple et aérée ;-))
La partie "regex" pour l'IP est expliquée ici, c'est un peu le même principe pour la partie @MAC ;-))
La partie "regex" pour l'IP est expliquée ici, c'est un peu le même principe pour la partie @MAC ;-))