Besoin de lire dans un fichier ligne par ligne separateur espace
bong26
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
zipe31 Messages postés 36402 Date d'inscription Statut Contributeur Dernière intervention -
zipe31 Messages postés 36402 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je ne comprends pas un truc j'ai besoin de faire un script en sh ou ksh pour lire un fichier sur plusieurs ligne
exemple:
cat toto.txt ( champs séparateur un espace entre chaque arguments)
compte1 121341 banque1
compte2 121eee banque2
compte3 777777 banque3
.......
but du jeux : je veux recuperer pour chaque ligne tous les champs pour mettre dans une commande
exemple de commande
commande compte1 excute 121341 action banque1 # ligne de commande avec les arguments recuperés
commande compte2 excute 121eee action banque2
etc...........
pour exprimer ce besoin j'ai fait soit une boucle for ou while et bien il me sort qu'une ligne sans me donner la globalité de mon fichier je ne comprends rien
##################### mon script ça donne ça ; mais ça ne fonctionne pas il ne récupere pas toutes les lignes je ne comprends pas
fichier="toto.txt"
oldIFS=$IFS # sauvegarde du separateur de champ
IFS=$'\n' # nouveau separateur de champ
for ligne in $(<$toto.txt)
do
APPLI=`echo "$line" |awk -F" " '{print $1}'`# recupere le 1er champ
NODE=`echo "$line" |awk -F" " '{print $2}'`
INSTANCE=`echo "$line" |awk -F" " '{print $3}'` # recupère le 2eme champs
# paramètre que je lance dans une commande pour chaque ligne
jndProjectCtl.sh --project $APPLI --instance $NODE:$INSTANCE status >> /app/jnd/cells/Cell_RLE-Production_std/SCRIPT_UTILE/JVM.TXT
done
Je ne comprends pas un truc j'ai besoin de faire un script en sh ou ksh pour lire un fichier sur plusieurs ligne
exemple:
cat toto.txt ( champs séparateur un espace entre chaque arguments)
compte1 121341 banque1
compte2 121eee banque2
compte3 777777 banque3
.......
but du jeux : je veux recuperer pour chaque ligne tous les champs pour mettre dans une commande
exemple de commande
commande compte1 excute 121341 action banque1 # ligne de commande avec les arguments recuperés
commande compte2 excute 121eee action banque2
etc...........
pour exprimer ce besoin j'ai fait soit une boucle for ou while et bien il me sort qu'une ligne sans me donner la globalité de mon fichier je ne comprends rien
##################### mon script ça donne ça ; mais ça ne fonctionne pas il ne récupere pas toutes les lignes je ne comprends pas
fichier="toto.txt"
oldIFS=$IFS # sauvegarde du separateur de champ
IFS=$'\n' # nouveau separateur de champ
for ligne in $(<$toto.txt)
do
APPLI=`echo "$line" |awk -F" " '{print $1}'`# recupere le 1er champ
NODE=`echo "$line" |awk -F" " '{print $2}'`
INSTANCE=`echo "$line" |awk -F" " '{print $3}'` # recupère le 2eme champs
# paramètre que je lance dans une commande pour chaque ligne
jndProjectCtl.sh --project $APPLI --instance $NODE:$INSTANCE status >> /app/jnd/cells/Cell_RLE-Production_std/SCRIPT_UTILE/JVM.TXT
done
A voir également:
- Bash lire fichier ligne par ligne
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Lire fichier epub - Guide
- Partager photos en ligne - Guide
- Fichier bin - Guide
- Mètre en ligne - Guide
3 réponses
Salut,
Le fichier :
Le script :
Le fichier :
$ cat fich.txt
compte1 121341 banque1
compte2 121eee banque2
compte3 777777 banque3
Le script :
$ while read c1 c2 c3;do echo "Champ1 = ${c1} | Champ2 = ${c2} | Champ3 = ${c3}"; done < fich.txt
Champ1 = compte1 | Champ2 = 121341 | Champ3 = banque1
Champ1 = compte2 | Champ2 = 121eee | Champ3 = banque2
Champ1 = compte3 | Champ2 = 777777 | Champ3 = banque3
Merci dans un 1er temps pour ta réponse.
Mais dans ta solution tu lui formates un mot : champ1, champs2 etc....
Sur un fichier à plusieurs ligne ça ne va pas être gérable
moi ce que j'ai besoin, j'aimerais que la boucle gère mon fichier rentré sans modification
$ cat fich.txt
compte1 121341 banque1
compte2 121eee banque2
compte3 777777 banque3
............etc
Mais dans ta solution tu lui formates un mot : champ1, champs2 etc....
Sur un fichier à plusieurs ligne ça ne va pas être gérable
moi ce que j'ai besoin, j'aimerais que la boucle gère mon fichier rentré sans modification
$ cat fich.txt
compte1 121341 banque1
compte2 121eee banque2
compte3 777777 banque3
............etc
Ma réponse est un exemple que tu dois adapter à ton besoin.
N'ayant pas à disposition ton application "dProjectCtl.sh", je ne peux que te proposer une réponse que je pense adaptée !
Si tu enlèves le "echo" de ma ligne de commande, ça devrait faire ce que tu veux, non ?
N'ayant pas à disposition ton application "dProjectCtl.sh", je ne peux que te proposer une réponse que je pense adaptée !
$ cat fich.txt
compte1 121341 banque1
compte2 121eee banque2
compte3 777777 banque3
$ while read APPLI NODE INSTANCE;do
echo "dProjectCtl.sh --project ${APPLI} --instance ${NODE}:${INSTANCE} status" >> JVM.txt
done < fich.txt
$ cat JVM.txt
dProjectCtl.sh --project compte1 --instance 121341:banque1 status
dProjectCtl.sh --project compte2 --instance 121eee:banque2 status
dProjectCtl.sh --project compte3 --instance 777777:banque3 status
Si tu enlèves le "echo" de ma ligne de commande, ça devrait faire ce que tu veux, non ?
bonsoir zipe31
j'ai bien essayé ton petit test mais il ne veut rien savoir il me crée bien la 1er ligne de ma boucle mais le reste il me sort impossible à creer je ne comprends rien
mon fichier txt ressemble à ça j'ai bien un espace sur les champs
actfgf lr2pr324v actfgfServer01
wasa6 mfle157p wasa6Server01
wasa6 mfle158p wasa6Server02
voici
Project:actfgf/Node:lr2pr324v/Instance:actfgfServer01/: STARTED
le reste impossible à traiter dans la boucle
#########################################################
mon script est bien :
echo " rentrer un fichier: "
read PARAM
while read APPLI NODE INSTANCE
do
jndProjectCtl.sh --project ${APPLI} --instance ${NODE}:${INSTANCE} status >> JVM.TXT
done < $PARAM
j'ai bien essayé ton petit test mais il ne veut rien savoir il me crée bien la 1er ligne de ma boucle mais le reste il me sort impossible à creer je ne comprends rien
mon fichier txt ressemble à ça j'ai bien un espace sur les champs
actfgf lr2pr324v actfgfServer01
wasa6 mfle157p wasa6Server01
wasa6 mfle158p wasa6Server02
voici
Project:actfgf/Node:lr2pr324v/Instance:actfgfServer01/: STARTED
le reste impossible à traiter dans la boucle
#########################################################
mon script est bien :
echo " rentrer un fichier: "
read PARAM
while read APPLI NODE INSTANCE
do
jndProjectCtl.sh --project ${APPLI} --instance ${NODE}:${INSTANCE} status >> JVM.TXT
done < $PARAM