j'ai voulu mettre toto pour varier mais je ne l'ai pas mis partout :sarcastic:
Jar Jar
jupiler a écrit a écrit :
tu peux aussi rajouter l'option -v nom_var=valeur :
awk -v toto=$nom '{ print $nom }' ...
Ça serait pas plutôt -v nom=$nom ?
jupiler
tu peux aussi rajouter l'option -v nom_var=valeur :
awk -v toto=$nom '{ print $nom }' ...
Jar Jar
fdl a écrit a écrit :
Bon, là je pinaille un peu, mais si $nom est une variable locale,
est-ce qu'il y a un autre mot clé que ENVIRON?
Pour évietr de faire un 'export' dans le code, ça économise une ligne!
On est obligé de passer par l'environnement, car le script awk s'exécute dans un autre processus.
Par contre, si tu mets nom=$nom au début de la ligne, tu économises la ligne export.
fdl
Bon, là je pinaille un peu, mais si $nom est une variable locale,
est-ce qu'il y a un autre mot clé que ENVIRON?
Pour évietr de faire un 'export' dans le code, ça économise une ligne!
jupiler
fdl a écrit a écrit :
Dans ce cas, ça risque d'être un peu plus compliqué avec awk.
Mais on peut utiliser le tail pour ce que je veux :
tail -n +1 fichier_a_recopier >> nouveau_fichier
Ca recopie fichier_a_recopier à partir de la 2ème ligne et l'ajoute à la suite de nouveau_fichier.
effectivement ca doit marcher mais pour ton propre intérêt, tu ferais mieux d'essayer de maîtriser awk
Jar Jar
nom=$nom awk '{ if (NR==1) print ENVIRON["nom"]; else print }'
Pour plus d'informations, cherche de la doc sur awk. C'est génial, ce truc. Personnellement, je l'utilise tous les jours pour faire du traitement de données numériques, c'est presque aussi puissant qu'un tableur mais ça va infiniment plus vite !
fdl
Dans ce cas, ça risque d'être un peu plus compliqué avec awk.
Mais on peut utiliser le tail pour ce que je veux :
tail -n +2 fichier_a_recopier >> nouveau_fichier
Ca recopie fichier_a_recopier à partir de la 2ème ligne et l'ajoute à la suite de nouveau_fichier.
[jfdsdjhfuetppo]--Message édité par fdl--[/jfdsdjhfuetppo]
jupiler
ca doit etre $nom qui merde
pour passer une variable à un awk c'est un peu plus compliqué
fdl
bon, le truc de fabriceMerc marche, mais c'est vrai que la ligne de Jar Jar paraît bien aussi.
Sauf que ça me renvoit un erreur :
awk : Field $() is not correct
J'ai écrit ça :
awk '{ if (NR==1) print $nom; else print }' ${REP_OUT:?}/$1 > ${REP_OUT:?}/$nom.TXT
Jar Jar, si tu pouvais me dire d'où ça vient, je pourrais gagner quelques lignes!
fabriceMerc
booohh!! :-) c'etait pour rester un peu pres dans la mm syntaxe que lui
[jfdsdjhfuetppo]--Message édité par fabriceMerc--[/jfdsdjhfuetppo]
Jar Jar
Tu n'as pas l'impression d'essayer de tuer une baleine avec une tapette à mouches ?
awk '{ if(NR==1) print "Ma 1e ligne de remplacement"; else print }' fichier > nouveau_fichier
[jfdsdjhfuetppo]--Message édité par Jar Jar--[/jfdsdjhfuetppo]
fabriceMerc
./script fichier
while read ligne do
....
done >$1
un truc comme sa marche ( vérifie la syntaxe )
fdl
salut,
j'ai un fichier dont je dois modifier la 1ere ligne puis recopier les suivantes.
Donc, je fais un :
for line in `cat le_fichier`
do
si 1ere ligne : echo nouvelle_ligne > nouveau_fichier
sinon, echo line >> nouveau_fichier
done;
Mais, si la ligne comporte un espace ou plusieurs, dans nouveau_fichier, cela se transforme en retour à la ligne à chaque fois.
Le cat semble ne pas prendre toute la ligne et tient compte des espaces.
Est-ce que quelqu'un pourrait resoudre mon probleme.