[SHELL] isoler 2 valeurs dans un fichier
Résolu
meelooz
-
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
comment pourrais-je isoler 2 valeurs dans un fichier de configuration?
exemple:
fichier de base:
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";
j'aimerais avoir en sortie:
192.168.1.2 f4:cf:44:9b:51:b6
192.168.1.3 f4:ce:36:8c:de:b6
isoler l'ip ou l'@MAC j'y arrive mais pas en gardant le couple ip/MAC, je tourne un peu en rond et je ne maitrise pas assez sed pour m'en sortir sans un petit coup de main.
merci à vous
comment pourrais-je isoler 2 valeurs dans un fichier de configuration?
exemple:
fichier de base:
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";
j'aimerais avoir en sortie:
192.168.1.2 f4:cf:44:9b:51:b6
192.168.1.3 f4:ce:36:8c:de:b6
isoler l'ip ou l'@MAC j'y arrive mais pas en gardant le couple ip/MAC, je tourne un peu en rond et je ne maitrise pas assez sed pour m'en sortir sans un petit coup de main.
merci à vous
A voir également:
- [SHELL] isoler 2 valeurs dans un fichier
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Classic shell - Télécharger - Personnalisation
6 réponses
[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]$
;-))
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 $
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.
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 ;-))