Shell et commande awk
bob
-
zipe31 Messages postés 38797 Statut Contributeur -
zipe31 Messages postés 38797 Statut Contributeur -
Salut,
j'ai besoin de faire une recherche sur plusieurs lignes, les données sont formatées ainsi :
xxxxxxxxxx
blablabla
65 aaaaaa
xxxxxxxxxx
blablabla
1256 aaaaaa
je voudrais récupérer les lignes où il y a le nombre,
j'utilise la commande awk avec l'option -F mais je sais pas trop comment faire :/
merci de votre aide :D
j'ai besoin de faire une recherche sur plusieurs lignes, les données sont formatées ainsi :
xxxxxxxxxx
blablabla
65 aaaaaa
xxxxxxxxxx
blablabla
1256 aaaaaa
je voudrais récupérer les lignes où il y a le nombre,
j'utilise la commande awk avec l'option -F mais je sais pas trop comment faire :/
merci de votre aide :D
A voir également:
- Shell et commande awk
- Invite de commande - Guide
- Classic shell - Télécharger - Personnalisation
- Commande terminal mac - Guide
- Diskpart commande - Guide
- Commande dism - Guide
2 réponses
Salut,
;-))
awk '/[[:digit:]]/ { print }' fichier
ou
grep '[[:digit:]]' fichier
ou encore
sed -n '/[[:digit:]]/p' fichier
;-))
merci de m'avoir répondu,
cependant, ce n'est pas tout à fait ça, je met ici un extrait du fichier :
awk '$2 ~ /voir/ && $1!=1 || length($0)< 7 && length($0)>=2 { print $1 }' fichier.txt
en principe la commande ci dessus devrait marcher mais ça ne fonctionne pas dès que j'ai une ligne comme celle là :
car la valeur que je cherche n'existe tout simplement pas, ce que j'essaye de faire c'est de récupérer chaque ligne se trouvant en dessous des lignes puissance, si la valeur n'existe pas alors je mettrais une valeur par défaut.
je sais pas si je suis assez clair lol
cependant, ce n'est pas tout à fait ça, je met ici un extrait du fichier :
185 08/11/N1011 22:49 BRUMAK, dasihaul puissance : 176 RICOU PASTISSAD 452 voir 186 08/11/N1011 22:48 KLOOP, dasihaul puissance : 74 RICOU PASTISSAD 502 voir 187 08/11/N1011 22:48 ANGELSPEED, dasihaul puissance : 60 RICOU PASTISSAD 558 1 voir
awk '$2 ~ /voir/ && $1!=1 || length($0)< 7 && length($0)>=2 { print $1 }' fichier.txt
en principe la commande ci dessus devrait marcher mais ça ne fonctionne pas dès que j'ai une ligne comme celle là :
183 08/11/N1011 22:54 FABULOUS33, dasihaul
puissance : 6 HYPERION
1 voir
car la valeur que je cherche n'existe tout simplement pas, ce que j'essaye de faire c'est de récupérer chaque ligne se trouvant en dessous des lignes puissance, si la valeur n'existe pas alors je mettrais une valeur par défaut.
je sais pas si je suis assez clair lol
Les associations sont ambiguës.
Moi, je comprend ça comme ça :
Tu cherches les lignes dont la deuxième colonne vaut "voir" ET dont la première colonne est différente de 1
OU
les lignes comprises entre 2 ET 7 caractères.
Si les conditions sont remplies tu veux afficher la première colonne.
Donc normale que si la première colonne vaut 1 ça ne s'affiche pas.
Moi, je comprend ça comme ça :
Tu cherches les lignes dont la deuxième colonne vaut "voir" ET dont la première colonne est différente de 1
OU
les lignes comprises entre 2 ET 7 caractères.
Si les conditions sont remplies tu veux afficher la première colonne.
Donc normale que si la première colonne vaut 1 ça ne s'affiche pas.
Avec "sed" :
$ cat plop
185 08/11/N1011 22:49 BRUMAK, dasihaul
puissance : 176 RICOU PASTISSAD
452 voir
186 08/11/N1011 22:48 KLOOP, dasihaul
puissance : 74 RICOU PASTISSAD
502 voir
187 08/11/N1011 22:48 ANGELSPEED, dasihaul
puissance : 60 RICOU PASTISSAD
558
1 voir
$ sed -n '/puissance/{n;p}' plop
452 voir
502 voir
558
$