Aide awk

Résolu
dna.factory Messages postés 26003 Date d'inscription   Statut Modérateur Dernière intervention   -  
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'aurais besoin d'aide pour réaliser la commande suivante :
Dans un fichier, j'ai une commande qui peut être placé à différents endroits.
différentes lignes, mais aussi différentes position dans la ligne.
(et bien évidement, je suis même pas sur que l'info soit présente).
En plus, cette information est composée d'une partie fixe (toujours la même, utilisée pour la recherche), et d'une partie variable (qui m'intéresse)

Pour extraire la ligne, facile, un grep, et c'est reglé.
grep value fichier
Je me retrouve donc avec des lignes pouvant avoir le format suivant

aaaaaaa bbbbbb cccccccc ddddddd value=XXX
value=XXY
aaaaaaa bbbbbb ddddddd value=XYX cccccccc

pour la solution, je l'ai sur le bout de la langue :
Un
awk '{ for(i=1;i<=NF;i++) {if (??????) print $i }}
ce qui me manque en fait, c'est comment faire la condition sachant que ce n'est pas un == mais un contient.

(je suppose qu'en plus, avec mon awk mon grep ne sert plus à rien :)

Merci d'avance pour l'aide


3 réponses

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
$ awk -v RS="[ \n]" '/=/' fichier
value=XXX
value=XXY
value=XYX
2
Utilisateur anonyme
 
cette information est composée d'une partie fixe (toujours la même, utilisée pour la recherche), et d'une partie variable (qui m'intéresse)
awk '{ for(i=1;i<=NF;i++) {if ($i ~ "^value") print gensub("[^=]*=","","g",$i) }}' 
XXX
XXY
XYX
1
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
$ cat plop 
aaaaaaa bbbbbb cccccccc ddddddd value=XXX
value=XXY
aaaaaaa bbbbbb ddddddd value=XYX cccccccc

$ grep -Po '.*value=\K[^ ]*' plop
XXX
XXY
XYX
0
dna.factory Messages postés 26003 Date d'inscription   Statut Modérateur Dernière intervention   1 618
 
Arf, j'ai été trop compliqué dans ma demande
j'avais juste besoin de
if ($i ~"value")

(je préfere conserver value et son contenu, donc un print $i est largement suffisant, et au moins, je suis sur de comprendre ce que ça fait quand je reprendrais le script dans1 an...
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431 > dna.factory Messages postés 26003 Date d'inscription   Statut Modérateur Dernière intervention  
 
je préfere conserver value et son contenu

$ grep -Po '.*\Kvalue=[^ ]*' plop 
value=XXX
value=XXY
value=XYX
0
dna.factory Messages postés 26003 Date d'inscription   Statut Modérateur Dernière intervention   1 618
 
aaa.. j'avais écrit un super message super bien tourné... et j'ai cliqué sur annuler..
en résumé..
J'ai bien l'option -P dans mon man, mais quand j'essaye de l'utiliser
grep: The -P option is not supported
Debian 4.0
GNU bash, version 3.1.17(1)-release (i486-pc-linux-gnu)

Je garde quand même, ça peut servir (sur le Centos par exemple).
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431 > dna.factory Messages postés 26003 Date d'inscription   Statut Modérateur Dernière intervention  
 
Essaye alors juste comme ça :

grep -o 'value=[^ ]*' plop
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Salut,

Et si tu nous disais exactement quel résultat final tu veux obtenir ?
La valeur de value de chaque ligne retournée ou autre chose ?
0
dna.factory Messages postés 26003 Date d'inscription   Statut Modérateur Dernière intervention   1 618
 
en très simplifié : comment faire un recherche 'contient' dans awk.
qqchquicommence m'a donné la réponse, un peu plus compliquée que ce que je voulais, mais j'ai ce que je voulais dedans, donc c'est bon.
Merci (et on se retrouve sur mon sujet sur les alias ?)
0