Bonjour.
J'aimerais utiliser une variable (e.g : today dans AWK e.g) :
Code:
1
2
3
4 #!/bin/bash today=`date "+%Y%m%d"` awk -F"," '($2==$today) {print $0}' test.txt
Mais ça ne marche pas, s'il vous plaît puis-je avoir de l'aide ?
Merci.
Version imprimable
Bonjour.
J'aimerais utiliser une variable (e.g : today dans AWK e.g) :
Code:
1
2
3
4 #!/bin/bash today=`date "+%Y%m%d"` awk -F"," '($2==$today) {print $0}' test.txt
Mais ça ne marche pas, s'il vous plaît puis-je avoir de l'aide ?
Merci.
"print $0" n'est pas indispensable ici car c'est l'action par défaut d'awk.
Voici deux façons de passer une variable à awk:
ou mieux:Code:
1
2
3
4 #!/bin/bash today=$(date "+%Y%m%d") awk -F "," '$2 == '$today' ' test.txt
Code:
1
2
3 ... awk -F "," -v today=$today '$2 == today' test.txt
Bonjour
Voici un échantillon ce qu'il y'a dans le fichier test.txt
Code:
1
2
3
4
5
6
7
8
9
10 33423424,16,,2013-03-19 33646240,16,,2013-03-19 33525510,16,,2013-03-19 33401025,16,,2013-03-19 33925853,16,,2013-03-19 33760755,16,,2013-03-19 33878690,16,,2013-03-19 33854147,16,,2013-03-19 33673985,16,,2013-03-19
Merci
Bonjour.
As-tu simplement essayé de comprendre et d'adapter la première suggestion de jlliagre ? Si oui quel est le problème rencontré ?
Il faut essayer de faire davantage d'effort de compréhension et de recherche et aussi faire un effort d'explication.
Là tu essayes de remplacer la 2ème colonne dans ton premier extrait de code... il faut savoir que l'indice des colonnes ne commence pas à 0 mais à 1. Du coup si tu cherche à remplacer la colonne vide (la 3ème donc) par la date du jour, voici une solution possible :
Si toutefois tu souhaite remplacer la date de la 4ème colonne par celle du jour, ben tu fait le même genre de traitement sauf que tu remplace la 4ème colonne à la place de la 3ème. Pareil si c'était vraiment la deuxième colonne (celle qui vaut "16") tu remplace la 2ème au lieu de la 3ème qui est vide (pas très cohérent).Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 [idriss@hp-dv6:~]$ cat test.txt 33423424,16,,2013-03-19 33646240,16,,2013-03-19 33525510,16,,2013-03-19 33401025,16,,2013-03-19 33925853,16,,2013-03-19 33760755,16,,2013-03-19 33878690,16,,2013-03-19 33854147,16,,2013-03-19 33673985,16,,2013-03-19 [idriss@hp-dv6:~]$ awk -F "," -v today=$(date "+%Y-%m-%d") '{print $1","$2","today","$4}' test.txt 33423424,16,2013-03-17,2013-03-19 33646240,16,2013-03-17,2013-03-19 33525510,16,2013-03-17,2013-03-19 33401025,16,2013-03-17,2013-03-19 33925853,16,2013-03-17,2013-03-19 33760755,16,2013-03-17,2013-03-19 33878690,16,2013-03-17,2013-03-19 33854147,16,2013-03-17,2013-03-19 33673985,16,2013-03-17,2013-03-19
Tu notera que j'ai pris le même format que la date de la 4ème colonne et non pas celui de ton code de départ. Tu notera aussi que awk n'est pas la seule solution (et pas forcemment la plus adaptée à toute les situations) :
Voilà, tu as de quoi te débrouiller même si on manque de détails. Tu as la méthode pour passer une variable à awk, a toi d'adapter en conséquence.Code:
1
2
3
4
5
6
7
8
9
10 [idriss@hp-dv6:~]$ sed "s/,,/,"$(date "+%Y-%m-%d")",/g" test.txt 33423424,16,2013-03-17,2013-03-19 33646240,16,2013-03-17,2013-03-19 33525510,16,2013-03-17,2013-03-19 33401025,16,2013-03-17,2013-03-19 33925853,16,2013-03-17,2013-03-19 33760755,16,2013-03-17,2013-03-19 33878690,16,2013-03-17,2013-03-19 33854147,16,2013-03-17,2013-03-19 33673985,16,2013-03-17,2013-03-19
Cordialement,
Idriss
Merci pour votre réponse , mais je voudrais chercher les lignes qui ont la quatrième colonne (la date) égale a la date actuelle
Code:awk -F, '$4 =="'$(date +%Y-%m-%d)'"' test.txt
Ou encore la solution citée dans post de jlliagre :
Sauf que $2 est à remplacer par $4, j'espère que c'est pas ce petit truc qui t'a reconduit vers nous pour nous dire "ça marche pas" :aie:Code:awk -F "," -v today=$today '$2 == today' test.txt