Awk : garder les colonnes contenant regex
Résolu
Bulot56
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous,
J'ai un fichier (monstrueux avec plein de colonnes!) dont je voudrai garder uniquement les colonnes dont la première ligne contient regex (en l'occurrence X, Y ou Z).
Par exemple :
tens1 x1 y1 z1 ea1 tens2 tens3 x3
4 6 3 7 9 10 36 3
devient :
x1 y1 z1 x3
6 3 7 3
J'imagine que awk est mon ami (mais je me trompe peut être ...).
Une bonne idée ?
J'ai un fichier (monstrueux avec plein de colonnes!) dont je voudrai garder uniquement les colonnes dont la première ligne contient regex (en l'occurrence X, Y ou Z).
Par exemple :
tens1 x1 y1 z1 ea1 tens2 tens3 x3
4 6 3 7 9 10 36 3
devient :
x1 y1 z1 x3
6 3 7 3
J'imagine que awk est mon ami (mais je me trompe peut être ...).
Une bonne idée ?
A voir également:
- Awk : garder les colonnes contenant regex
- Awk dédoublonner un print ✓ - Forum Shell
- SED ou Awk sous windows ?? - Forum Windows
- Suppression de lignes en awk ✓ - Forum Shell
- Awk : tri selon la date ✓ - Forum Shell
- Awk : remplacement d'un élément conditionnel - Forum Shell
5 réponses
hello
$ awk -v regex="x|y|z" 'NR==1 {for(n=1; n<=NF; n++)if($n ~ regex)c[++col]=n} {for(n=1; n<=col;)printf $c[n++] OFS; print ""}' fichier x1 y1 z1 x3 6 3 7 3 $
Mieux qu'une bonne idée, une solution !
C'est super efficace, merci beaucoup ...
Bon, si je décortique un peu, "|" c'est OU
Si je veux faire un ET ? J'ai pas beaucoup de succès avec '&' .
C'est super efficace, merci beaucoup ...
Bon, si je décortique un peu, "|" c'est OU
Si je veux faire un ET ? J'ai pas beaucoup de succès avec '&' .
oui, | c'est ou.
pour and, il faut un peu changer la regexp: par ex , contient x ou z ET y
pour and, il faut un peu changer la regexp: par ex , contient x ou z ET y
awk -v r="x|z && y" ...
Merci bcp ! Bon, je complique un tout petit peu la tache ... je cherche à garder les colonnes contenant ou $x ou $y ou $z. J'arrive pas à échapper le $ ! Est ce que tu as encore une solution ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question