question script bash

Salut à tous.

J’ai un script qui m’enregistre une donnée dans un CSV (grep -o “A” $1 | wc -l > nb.csv) mais je voudrais enregistrer une seconde donnée dans la seconde colone de mon CSV…
Si je fais juste un echo, il m’enregistre ça à la ligne. Quelqu’un a une idée ?
Merci à tous.

Salut Franck,

Tu souhaites ajouter une colonne et une donnée dedans ?
Dans toutes les lignes ou une seule ?

disons “dans une seule” puisque je rajoute des lignes ensuites, je ferais la même manip.

As-tu regardé du côté de ‹ sed › et de ‹ awk › ?
J’ai demandé à Google, qui m’a conduit à Wikipédia, puis à ces deux programmes…

En bash, il est aussi possible de manipuler les chaînes de caractères.
J’utilise le « Guide avancé de scripts bash » de Mendel Cooper (depuis 2012), traduit en français, mais je découvre en le cherchant pour toi que le site n’est plus accessible.
Si tu sais l’anglais…

Je peux te le passer (version html 3,5 Mo) au Guilvinec dans 15 jours. Ou par Internet en zip.

Au vu de la commande, (grep -o “A” $1 | wc -l > nb.csv)
Ca écrase le fichier en y insérant juste un chiffre.

Le retour chariot sous linux est fait après le echo, utilise -n pour ne pas avoir de retour chariot.

Si tu n’a qu’une ligne dans ton “CSV”, tu peux faire ainsi (ici la virgule est le séparateur) :

echo -n `grep -o "A" $1 | wc -l` > /tmp/monfichier.csv echo -n "," >> /tmp/monfichier.csv echo -n "une 2eme valeur comme la date : `date`" >> /tmp/monfichier.csv echo -n "," >> /tmp/monfichier.csv echo "une 3eme et derniere valeur" >> /tmp/monfichier.csv

date --> `` sont des backquotes (ALTGR+7) pour interpréter le contenu (ici date) et non afficher “date”

Fanch

Merci Cron-dub, je suis preneur… :wink:

Une fois compressé le « guide avancé de scripts bash » tient sur à peine 610 ko au lieu de 3,5 Mo.
Mais je n’ai pas trouvé sur le forum comment te l’envoyer… « Fichier joint, connais pas ! »

Sinon je serai au Guilvinec bientôt.

Merci…

ça me rassure, Fanch… :wink:

En fait j’ai plusieurs lignes dans mon CSV…
Comment faire un retour à la ligne ?

Tu fais bien un “echo” sans le “-n” sur la dernière valeur de ton CSV ? un echo simple te rajoutera un retour chariot à la fin, et les valeurs suivantes se feront sur une autre ligne.

Merci…
Moi, j’cause PHP et Python… Là j’ai du mal, mis je vais m’y mettre à fond… :wink:

[quote=« Franck, post:13, topic:3287 »]Merci…
Moi, j’cause PHP et Python… Là j’ai du mal, mis je vais m’y mettre à fond… ;)[/quote]
Franck,
Le bash est un empilement d’époques en couches géologiques. Pas facile de s’y retrouver, entre les instructions anciennes et les nouvelles ; ça dépend aussi de ce que tu veux faire !
Quand je me suis penché sur ce « Guide avancé … » j’avais tout mon temps ou presque, et une idée de ce que je voulais faire. Ça m’a pris tout de même du temps de chercher, fouiller, tester les instructions en question sur des scripts réduits à quelques lignes, puis incorporer le résultat dans le script voulu.

En plus du « Guide avancé … » je te passerai ces quelques scripts tests et des scripts d’utilisation courante. Ils ont le mérite d’être complets et fonctionnels. Une « démonstration » ou une « explication » ne suffisent pas toujours pour comprendre comment faire. Sur cela, le « guide avancé … » est plutôt bien fait, dans ses 800 à 900 ‹ pages ›, lesquelles comprennent énormément d’exemples, modèles, trucs et autres.

Dans l’ensemble, le bash n’est pas simple d’utilisation…

En le cherchant quand même, on le trouve :
http://pierrellensa.free.fr/dev/bash/www.bsdbooks.net/shells/scripting/fr/index.html (version 2003)
Directement chez l’auteur (Mendel Cooper), si tu pratiques l’anglais :
http://www.tldp.org/LDP/abs/html/ (version 2014 ?)
Etc.

Merci.
Après c’est pas tout jeune non plus, mais ça me semble plutôt bien foutu quand même… Mais c’est une logique différente de ce que je connais (PHP principalement).