KioskeaKioskeaCommentCaMarcheInscrivez-vous, c'est gratuit !
Samedi 17 mai 2008 - 13:29:04

[shell unix] fichier ligne par ligne

Rechercher : dans
[shell unix] fichier ligne par ligne
par jebok
 Fil de Discussions
Statut : Résolu
vendredi 29 juillet 2005 à 14:52:35
Bonjour,

comment faire défiler un fichier ligne par ligne, de manière à traiter chaque ligne ?
Merci de votre aide
Répondre à jebok  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par francis, le vendredi 29 juillet 2005 à 15:07:30 Fil de Discussions
ça dépand du traitement mais si lire la ligne pour faire une action

cat FICHIER | while read ligne
do
....
....
#action
....
....
done
Répondre à francis

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par UNIX/VI/SHELL, le samedi 15 juillet 2006 à 15:42:46 Fil de Discussions
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
Répondre à UNIX/VI/SHELL

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par jipicy, le samedi 15 juillet 2006 à 17:58:35 Fil de Discussions
Salut,

J'espere que je réponds pas trop tard mais je viens de voir ton message.
Ben si un peu quand même ;-))

Et puis la solution a été donnée par "francis" dans le post #1.
Cen n'est pas un affichage ligne par ligne qui est demandé, mais un "traitement" ligne par ligne, ce qui a très bien été expliqué par "francis" dans son exemple.

;-)) Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.
Répondre à jipicy

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par kelux, le samedi 15 juillet 2006 à 18:11:21 Fil de Discussions
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]
Répondre à kelux

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par darkukai, le mercredi 22 novembre 2006 à 15:25:41 Fil de Discussions
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 :)
Répondre à darkukai

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par jipicy, le mercredi 22 novembre 2006 à 19:32:13 Fil de Discussions
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é.
Répondre à jipicy

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par darkukai, le jeudi 23 novembre 2006 à 08:28:01 Fil de Discussions
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
Répondre à darkukai

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par truky, le mercredi 23 mai 2007 à 15:30:29 Fil de Discussions
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
Répondre à truky

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par Ibrahim, le vendredi 13 juillet 2007 à 11:40:03 Fil de Discussions
Qui a une idée de comment utilise la boucle for avec le shell unix Merci
Répondre à Ibrahim

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par visiteur, le jeudi 20 septembre 2007 à 12:22:20 Fil de Discussions
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.
Répondre à visiteur

16


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par dam, le mardi 29 avril 2008 à 22:43:03 Fil de Discussions 
Merci ca sert encore et encore.
Répondre à dam

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par lami20j, le jeudi 20 septembre 2007 à 12:29:41 Fil de Discussions
Et ça va servir encore l'année prochaine, et ainsi de suite..... :-)) lami20j
Répondre à lami20j

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par Petrio42, le vendredi 30 novembre 2007 à 15:36:03 Fil de Discussions
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
Répondre à Petrio42

13


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par jipicy, le vendredi 30 novembre 2007 à 15:40:51 Fil de Discussions
Salut,

Voir la FAQ : Comment lire un fichier ligne par ligne

;-))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.
Répondre à jipicy

14


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par Petrio42, le vendredi 30 novembre 2007 à 15:47:44 Fil de Discussions
merci pour cette reponse rapide je vais regarder un peu tout sa
Répondre à Petrio42

15


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
Par dubcek, le vendredi 30 novembre 2007 à 15:51:19 Fil de Discussions
la commande find fait la boucle toute seule
find . -type f -ctime +2 -print
ajouter, pour supprimer les fichiers:
-exec rm {} \;
sinon une boucle en sh:
for N in liste_de_fichier
do
...
done
Répondre à dubcek
Discussions pertinentes trouvées dans le forum
26/04 13h24Shell Unix FichierProgrammation26/04 19h202
19/04 12h34[Scrip shell] Help var_i=ligne_i d'un fichierProgrammation19/04 15h477
06/04 17h06SHELL-remplacer un ligne dans un fichier-AWKLinux/Unix03/12 11h0710
16/02 10h56[Shell Unix] Ecrire dans un fichier de logLinux/Unix16/02 13h373
Plus de discussions sur « [shell unix] fichier ligne par ligne » Discussion en cours Discussion fermée Problème résolu
Répondre
Titre du message :
Votre pseudo:
Votre email :
Message: 
  •  
  •  
Options: Recevoir les réponses par mail.
 

Aide