Shell et commande awk

Fermé
bob - Modifié par bob le 13/11/2011 à 18:27
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 14 nov. 2011 à 23:09
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
A voir également:

2 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 422
13 nov. 2011 à 18:31
Salut,

awk '/[[:digit:]]/ { print }' fichier
ou
grep '[[:digit:]]' fichier
ou encore 
sed -n '/[[:digit:]]/p' fichier

;-))
3
merci de m'avoir répondu,

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
0
EminoMeneko Messages postés 2435 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018 318
13 nov. 2011 à 22:24
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.
0
j'avais compris ma commande lol

ce que je voudrais c'est afficher la première colonne quelque soit la valeur avec un awk -F \n mais je ne connais pas la syntaxe précise...
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 422
14 nov. 2011 à 16:08
Ben même topo pour moi, je pige que dalle ;-((

Merci d'afficher un exemple concret de ton fichier d'entrée et le résultat souhaité.
0
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

Voilà ce que je veux, les lignes en gras, désolé
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 422
14 nov. 2011 à 19:10
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

$
0

Discussions similaires