Bonjour, j'ai un soucis lors de la recuperation de valeur.
Je parcour un fichier toto.txt qui contient par exemple: 1:2:5 8 9
Je fait: for X in `cat toto.txt` do a=`echo $X|cut -d':' -f1` b=`echo $X|cut -d':' -f2` c=`echo $X|cut -d':' -f3` done
le probleme c'est que dans le $c je n'ai que 5 Comment faire pour avoir 5 8 9 dans le $c ?? [...]
IFS=: read -r a b c junk < toto.txt
regles basiques de shell:
- Ne pas utiliser "echo" - ne pas laisser de variables unquotees a moins d'avoir une bonne raison - quand on laisse une variable ou une command substitution (`...` ou $(...)) unquotee, s'assurer que IFS est ce qu'on veut et lancer un "set -f" avant. - eviter les boucles, surtout pour processer du texte (utiliser un outil comme awk, sed...)
awk -F: ' { # ce que tu veux avec $3 comme: print $3 }' < toto.txt
-- Stephane
On 11 Jan 2006 02:40:30 -0800, ozzii wrote:
Bonjour,
j'ai un soucis lors de la recuperation de valeur.
Je parcour un fichier toto.txt qui contient par exemple:
1:2:5 8 9
Je fait:
for X in `cat toto.txt`
do
a=`echo $X|cut -d':' -f1`
b=`echo $X|cut -d':' -f2`
c=`echo $X|cut -d':' -f3`
done
le probleme c'est que dans le $c je n'ai que 5
Comment faire pour avoir 5 8 9 dans le $c ??
[...]
IFS=: read -r a b c junk < toto.txt
regles basiques de shell:
- Ne pas utiliser "echo"
- ne pas laisser de variables unquotees a moins d'avoir une
bonne raison
- quand on laisse une variable ou une command substitution
(`...` ou $(...)) unquotee, s'assurer que IFS est ce qu'on
veut et lancer un "set -f" avant.
- eviter les boucles, surtout pour processer du texte (utiliser
un outil comme awk, sed...)
awk -F: '
{
# ce que tu veux avec $3 comme:
print $3
}' < toto.txt
Bonjour, j'ai un soucis lors de la recuperation de valeur.
Je parcour un fichier toto.txt qui contient par exemple: 1:2:5 8 9
Je fait: for X in `cat toto.txt` do a=`echo $X|cut -d':' -f1` b=`echo $X|cut -d':' -f2` c=`echo $X|cut -d':' -f3` done
le probleme c'est que dans le $c je n'ai que 5 Comment faire pour avoir 5 8 9 dans le $c ?? [...]
IFS=: read -r a b c junk < toto.txt
regles basiques de shell:
- Ne pas utiliser "echo" - ne pas laisser de variables unquotees a moins d'avoir une bonne raison - quand on laisse une variable ou une command substitution (`...` ou $(...)) unquotee, s'assurer que IFS est ce qu'on veut et lancer un "set -f" avant. - eviter les boucles, surtout pour processer du texte (utiliser un outil comme awk, sed...)
awk -F: ' { # ce que tu veux avec $3 comme: print $3 }' < toto.txt
-- Stephane
ozzii
Je vais tester cela demain car je ne suis plus au boulot.
Je vais tester cela demain car je ne suis plus au boulot.
Je vais tester cela demain car je ne suis plus au boulot.
ozzii
Petite question: Quelle est la différence entre l'utilisation de boucle et du awk pour parcourir un fichier ?? Est-ce qu'avec un "while read" c'est parreil ??
Merci
Petite question:
Quelle est la différence entre l'utilisation de boucle et du awk pour
parcourir un fichier ??
Est-ce qu'avec un "while read" c'est parreil ??
Petite question: Quelle est la différence entre l'utilisation de boucle et du awk pour parcourir un fichier ?? Est-ce qu'avec un "while read" c'est parreil ??
Merci
Xavier Gachon
Le 11-01-2006, ozzii a écrit :
Quelle est la différence entre l'utilisation de boucle et du awk pour parcourir un fichier ??
Les shells etant des langages de commandes le corp des boucles implique souvent le lancement de multiples commandes externes pour chaque traitement là ou awk & co prennent generalement en charge l'integralité des traitements en une commande, la difference en terme de temps machine peut rapidement devenir non negligeable. Evidemment lorsque l'integralité des traitements sont faits dans le shell sans appel a des commandes externes les memes considerations de performances s'applique alors du point de vue des implementations des shells eux meme vis a vis de langages ou commandes specialisés du type awk, sed, etc; En pratique les shells ne sont generalement pas des foudres de guerres (c'est rien de le dire :).
Est-ce qu'avec un "while read" c'est parreil ??
oui, et dans ton exemple cela evite d'avoir a subir l'influence de l'IFS, là aussi l'utilisation d'un langage/d'une commande moins lié a l'environnement du shell permettant de la lancer evite des surprises :)
xavier
Le 11-01-2006, ozzii <ozzii23@gmail.com> a écrit :
Quelle est la différence entre l'utilisation de boucle et du awk pour
parcourir un fichier ??
Les shells etant des langages de commandes le corp des boucles
implique souvent le lancement de multiples commandes externes
pour chaque traitement là ou awk & co prennent generalement
en charge l'integralité des traitements en une commande, la
difference en terme de temps machine peut rapidement devenir
non negligeable. Evidemment lorsque l'integralité des traitements
sont faits dans le shell sans appel a des commandes externes les
memes considerations de performances s'applique alors du point de
vue des implementations des shells eux meme vis a vis de langages
ou commandes specialisés du type awk, sed, etc; En pratique les
shells ne sont generalement pas des foudres de guerres (c'est rien
de le dire :).
Est-ce qu'avec un "while read" c'est parreil ??
oui, et dans ton exemple cela evite d'avoir a subir l'influence
de l'IFS, là aussi l'utilisation d'un langage/d'une commande
moins lié a l'environnement du shell permettant de la lancer
evite des surprises :)
Quelle est la différence entre l'utilisation de boucle et du awk pour parcourir un fichier ??
Les shells etant des langages de commandes le corp des boucles implique souvent le lancement de multiples commandes externes pour chaque traitement là ou awk & co prennent generalement en charge l'integralité des traitements en une commande, la difference en terme de temps machine peut rapidement devenir non negligeable. Evidemment lorsque l'integralité des traitements sont faits dans le shell sans appel a des commandes externes les memes considerations de performances s'applique alors du point de vue des implementations des shells eux meme vis a vis de langages ou commandes specialisés du type awk, sed, etc; En pratique les shells ne sont generalement pas des foudres de guerres (c'est rien de le dire :).
Est-ce qu'avec un "while read" c'est parreil ??
oui, et dans ton exemple cela evite d'avoir a subir l'influence de l'IFS, là aussi l'utilisation d'un langage/d'une commande moins lié a l'environnement du shell permettant de la lancer evite des surprises :)
xavier
Ozzii
Xavier Gachon écrivait news::
Le 11-01-2006, ozzii a écrit :
Quelle est la différence entre l'utilisation de boucle et du awk pour parcourir un fichier ??
Les shells etant des langages de commandes le corp des boucles implique souvent le lancement de multiples commandes externes pour chaque traitement là ou awk & co prennent generalement en charge l'integralité des traitements en une commande, la difference en terme de temps machine peut rapidement devenir non negligeable. Evidemment lorsque l'integralité des traitements sont faits dans le shell sans appel a des commandes externes les memes considerations de performances s'applique alors du point de vue des implementations des shells eux meme vis a vis de langages ou commandes specialisés du type awk, sed, etc; En pratique les shells ne sont generalement pas des foudres de guerres (c'est rien de le dire :).
Est-ce qu'avec un "while read" c'est parreil ??
oui, et dans ton exemple cela evite d'avoir a subir l'influence de l'IFS, là aussi l'utilisation d'un langage/d'une commande moins lié a l'environnement du shell permettant de la lancer evite des surprises :)
Le 11-01-2006, ozzii <ozzii23@gmail.com> a écrit :
Quelle est la différence entre l'utilisation de boucle et du awk pour
parcourir un fichier ??
Les shells etant des langages de commandes le corp des boucles
implique souvent le lancement de multiples commandes externes
pour chaque traitement là ou awk & co prennent generalement
en charge l'integralité des traitements en une commande, la
difference en terme de temps machine peut rapidement devenir
non negligeable. Evidemment lorsque l'integralité des traitements
sont faits dans le shell sans appel a des commandes externes les
memes considerations de performances s'applique alors du point de
vue des implementations des shells eux meme vis a vis de langages
ou commandes specialisés du type awk, sed, etc; En pratique les
shells ne sont generalement pas des foudres de guerres (c'est rien
de le dire :).
Est-ce qu'avec un "while read" c'est parreil ??
oui, et dans ton exemple cela evite d'avoir a subir l'influence
de l'IFS, là aussi l'utilisation d'un langage/d'une commande
moins lié a l'environnement du shell permettant de la lancer
evite des surprises :)
Quelle est la différence entre l'utilisation de boucle et du awk pour parcourir un fichier ??
Les shells etant des langages de commandes le corp des boucles implique souvent le lancement de multiples commandes externes pour chaque traitement là ou awk & co prennent generalement en charge l'integralité des traitements en une commande, la difference en terme de temps machine peut rapidement devenir non negligeable. Evidemment lorsque l'integralité des traitements sont faits dans le shell sans appel a des commandes externes les memes considerations de performances s'applique alors du point de vue des implementations des shells eux meme vis a vis de langages ou commandes specialisés du type awk, sed, etc; En pratique les shells ne sont generalement pas des foudres de guerres (c'est rien de le dire :).
Est-ce qu'avec un "while read" c'est parreil ??
oui, et dans ton exemple cela evite d'avoir a subir l'influence de l'IFS, là aussi l'utilisation d'un langage/d'une commande moins lié a l'environnement du shell permettant de la lancer evite des surprises :)