|
|
|
| [shell unix] fichier ligne par ligne par jebok |
vendredi 29 juillet 2005 à 14:52:35 |
ça dépand du traitement mais si lire la ligne pour faire une action
cat FICHIER | while read ligne do .... .... #action .... .... done |
Salut
J'espere que je réponds pas trop tard mais je viens de voir ton message. Tu peut utiliser aussi la commande more: $: more test Bonjour --More--(82%) Appuie sur Entrer pour afficher le reste du fichier. ------------------------------------ UNIX/VI/SHELL
|
Encore quelques jours et c'était un an pile de retard !
Ah oui le mode asynchrone c'est gênant des fois...un an apres c'est pas mal quand meme :) Luc L. [Gentoo Is Good] |
hi hi hi excellent le retour de la réponse d'outre tombe un an plus tard :)
bon du coup ce petit re-up du post me convient bien parceque j'ai le même problème si ce n'est que le mien est un peu plus pointu j'ai un fichier .csv suivant : riri rara roro toto tata titi lili lala lolo j'aimerai lire ligne par ligne ce fichier dans une boucle pour au premier passage mettre variable1=riri variable2=rara variable3=roro 2ème passage: variable1=toto variable2=tata variable3=titi etc... j'ai reussi a créer la boucle qui va bien pour passer de ligne en ligne comme suit : while read ligne
do
i=$i+1
echo $i
# Définition des variables à partir du fichier list.csv
#-F ";"
awk '{print $1}' > init_prenom
init_prenom=$(cat init_prenom)
echo $init_prenom
awk '{print $2}' > prenom
prenom=$(cat prenom)
echo $prenom
awk '{print $3}' > nom
nom=$(cat nom)
echo $nom
done < $fichier
done
mais ma command awk semble ne pas fonctionner car elle ne me sort aucune valeur du fichier :( si quelqu'un a une idée ?? merci d'avance ps : je sais que mon script est tout pourri donc pas de remarque sur l'optimisation c'est juste un truc dont je suis censé me servir une fois pour remplir un annuaire ldap ... avec plein de titi toto lala lili bref je m'amuse :) |
Salut,
Essaie ça : [jp@MDK tmpfs]$ cat fich.txt riri rara roro toto tata titi lili lala lolo [jp@MDK tmpfs]$ cat new.sh #!/bin/bash while read ligne do set $(echo $ligne) init_prenom=$(eval echo $1) prenom=$(eval echo $2) nom=$(eval echo $3) echo -e "variable1=$init_prenom\nvariable2=$prenom\nvariable3=$nom\n" done < fich.txt [jp@MDK tmpfs]$ sh new.sh variable1=riri variable2=rara variable3=roro variable1=toto variable2=tata variable3=titi variable1=lili variable2=lala variable3=lolo [jp@MDK tmpfs]$;-)) Z'@+...che. JP : Zen, my Nuggets ! ;-) Le savoir n'est bon que s'il est partagé. |
OUuuaaaaAAAa
C'est génial çà marche super au poil :) :) merci vraiment merci je suis pas un développeur ( nooonnn sans déconner :) ) et j'ai passer toute l'aprem d'hier a essayer de me dépatouiller avec awk sans résultat encore merci de ton aide @Bientot |
Je sais que ca remonte a 2006 mais pour les prochains lecteurs
ben che pas si vous aimez le truc compliqué mais j'ai while read a b c do echo "$a $b $c" done < fichier.txt tou simplement bye |
Qui a une idée de comment utilise la boucle for avec le shell unix Merci |
Le sujet date de plus de deux ans maintenant, la reponse de celui qui l'a initié a été un an plus tard, pourtant moi au jour d'aujourd'hui en 2007 ça me sert ce sujet, et null doute que des personnes qui auront besoin de ce sujet seront enthousiasmées de trouver cette solution, des années aprés et pourquoi pas des décennies aprés, vue qu'Internet est devenu le seul outil immortel que l'homme ait inventé.
Je tiens quand même a remercier les personnes qui ont initiées ce sujet, et celles et ceux qui ont apportées leurs contributions. Bien à vous.
|
Et ça va servir encore l'année prochaine, et ainsi de suite..... :-))
lami20j |
bonjour,
Dans un dossier se trouver des fichiers. J'aimerais trouver une commande en shell qui me permetterer de supprimer les fichier qui date de plus de deux jour(Pour savoir je vais comparer la date de creation du fichier depuis 1970 et le jour que nous somme depuis 1970). Comme le nombre de fichier dans le dossier est variable (car il s'agit du dossier recuperant les fichier uploader) je pense faire une boucle mais je sai pas du tout comment faire quelqu'un pourait-il m'aider. Voila se que j'ai commencer a faire #!/bin/sh datecre=`stat -c $Y /var/www/html/upload/files/* #met en variable le nombre de seconde du fichier depuis 1970` nbdefichier=`find /var/www/html/upload/files/ -type f | wc -l`#donne le nombre de fichier dans le dossier seconde1970=`date +%s` #met le nombre de seconde en variable depuis 1970 ((jour1970=$seconde1970/86400)) #on converti les sec en heur ((jourfichier=$datecre/86400)) #on fait pareil pour les fichiers dans le dossier echo "nous avons $nbdefichier dans le dossier" echo "Date de creation des fichiers dans le dossier = $jourfichier" echo "Jour depuis 1970 = $jour1970" Voila se que j'ai commencer a faire tout cela marche bien quant il n'y a qu'un seul ficiher il me donne bien sa date en jour depuis 1970 mais des que j'en rajoute plus rien ne marche je pense mettre une boucle mais je ne sais pas comment faire . Merci d'avance
|
| 26/04 13h24 | Shell Unix Fichier | Programmation | 26/04 19h20 | 2 |
| 19/04 12h34 | [Scrip shell] Help var_i=ligne_i d'un fichier | Programmation | 19/04 15h47 | 7 |
| 06/04 17h06 | SHELL-remplacer un ligne dans un fichier-AWK | Linux/Unix | 03/12 11h07 | 10 |
| 16/02 10h56 | [Shell Unix] Ecrire dans un fichier de log | Linux/Unix | 16/02 13h37 | 3 |