Awk : garder les colonnes contenant regex
Résolu/Fermé
Bulot56
Messages postés
10
Date d'inscription
mardi 24 janvier 2012
Statut
Membre
Dernière intervention
30 avril 2015
-
31 juil. 2013 à 09:44
dubcek Messages postés 18764 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 9 février 2025 - 6 août 2013 à 08:36
dubcek Messages postés 18764 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 9 février 2025 - 6 août 2013 à 08:36
A voir également:
- Awk : garder les colonnes contenant regex
- DNS_PROBE_FINISHED_NXDOMAIN : dnsapi.dll (Win32:Patched-AWK) ✓ - Forum Virus
- Fonctionnement de foreach et awk et set ✓ - Forum Shell
- Supprimer des lignes avec awk ou sed ✓ - Forum Shell
- Commande bash awk, comment mettre en variables. ✓ - Forum Linux / Unix
- Commande équivalent à Sed, awk, tail,head en powershell ! - Forum Shell
5 réponses
dubcek
Messages postés
18764
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
9 février 2025
5 624
31 juil. 2013 à 10:53
31 juil. 2013 à 10:53
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 $
Bulot56
Messages postés
10
Date d'inscription
mardi 24 janvier 2012
Statut
Membre
Dernière intervention
30 avril 2015
31 juil. 2013 à 11:51
31 juil. 2013 à 11:51
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 '&' .
dubcek
Messages postés
18764
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
9 février 2025
5 624
31 juil. 2013 à 12:49
31 juil. 2013 à 12:49
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" ...
dubcek
Messages postés
18764
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
9 février 2025
5 624
2 août 2013 à 10:03
2 août 2013 à 10:03
&& n'est pas une regex. pour chercher x et y :
awk -v r="x.*y|y.*x" ...
Bulot56
Messages postés
10
Date d'inscription
mardi 24 janvier 2012
Statut
Membre
Dernière intervention
30 avril 2015
5 août 2013 à 17:13
5 août 2013 à 17:13
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
dubcek
Messages postés
18764
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
9 février 2025
5 624
6 août 2013 à 08:36
6 août 2013 à 08:36
double \
$ cat a0 tens1 $x1 y1 $z1 ea1 tens2 tens3 x3 4 6 3 7 9 10 36 3 $ 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 ""}' a0 $x1 $z1 6 7 $