Commande simple (1 ligne) sélection de mots ds colonne "entête"

Swiss Knight Messages postés 1956 Date d'inscription   Statut Membre Dernière intervention   -  
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   -
Salut,

Existe-t-il un moyen simple pour sélectionner toutes les lignes d'un fichier sur la base d'un mot clé contenu dans dans une colonne ( basé sur l'entête de la colonne, et non sa position ) ?

Par exemple, en langage humain :
"selectionner toutes les lignes (complètes) du fichier dont le contenu de la colonne "date" est 22.04.2013"
??

Avec awk, c'est relativement aisé si on connait le numéro de la colonne, mais je souhaite le faire connaissant le contenu de l'entête de la colone.

Et si possible en 1 ligne, le plus simplement possible... pour pouvoir vérifier rapidement la présence de certains critères.

Merci et bonne fin de soirée / nuit.
A voir également:

3 réponses

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
$ cat a2 
rien rien rien date rien 
x x x 22.04.2013 x 
y  y  y  22.05.2013 y 
$  
$ awk -v var=22.04.2013 'NR==1 {while(++n<=NF)if($n ~ /date/)next} $n ~ var' a2 
x x x 22.04.2013 x 
$  
2
Swiss Knight Messages postés 1956 Date d'inscription   Statut Membre Dernière intervention   110
 
Salut.

Nickel chrome ; le petit hic c'est que ça ne fonctionne pas si un champ contient beaucoup de mots, par exemple un commentaire, et qu'on aimerait faire un recherche à la manière de grep, sur un mot, ou même un morceau de mot.
Cette méthode nécessite d'entrer l'intégralité du champ dans la variable var.

"Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement." -A. Einsten-
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
donne un exemple, parce que :
$ awk -v var=4.2013 'NR==1 {while(++n<=NF)if($n ~ /date/)next} $n ~ var' a2   
x x x 22.04.2013 x  
$ 
$ cat a2
rien rien rien date rien
x x x 22.04.2013 x
y  y  y  22.05.2013 y
y  y  y  22.04.2014 y
$ awk -v var="4.201[34]" 'NR==1 {while(++n<=NF)if($n ~ /date/)next} $n ~ var' a2 
x x x 22.04.2013 x
y  y  y  22.04.2014 y
$ 
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
$n ~ var signifie $n contient var, et pas $n == var
0