Commande while avec résultat insastifaisant
Résolu
Ka-El
Messages postés
260
Date d'inscription
Statut
Membre
Dernière intervention
-
Ka-El Messages postés 260 Date d'inscription Statut Membre Dernière intervention -
Ka-El Messages postés 260 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je souhaite retravailler chaque ligne d'un fichier texte "toto.txt" avec la commande while. mais au bout d'un certain nombre de ligne j'obtiens un résultat faussé.
Voici le contenu du fichier que j'utilise:
-rw-rw-r-- 1 toto groupe 8000 Jan 27 03:34 /rep/tmp/X6574886
-rw-rw-r-- 1 toto groupe 8000 Jan 28 03:32 /rep/tmp/X6590919.tmp1
-rw-rw-r-- 1 toto groupe 8000 Jan 29 03:32 /rep/tmp/X6595523
-rw-rw-r-- 1 toto groupe 8000 Jan 31 03:32 /rep/tmp/X6616153
-rw-rw-r-- 1 toto groupe 8000 Feb 1 03:33 /rep/tmp/X6633919
-rw-rw-r-- 1 toto groupe 40000 Feb 1 04:18 /rep/tmpXF6634439
-rw-rw-r-- 1 toto groupe 8000 Feb 2 03:32 /rep/tmp/FX652664
-rw-rw-r-- 1 toto groupe 8000 Feb 3 03:32 /rep/tmp/FX670904
-rw-rw-r-- 1 toto groupe 19966 Feb 3 17:47 /rep/tmp/X6681867
-rw-rw-r-- 1 toto groupe 8000 Feb 4 03:32 /rep/tmp/FX688134
-rw-rw-r-- 1 toto groupe 8000 Feb 5 03:32 /rep/tmp/FX692885
Mon but est de variabiliser les numéros de fin de ligne en supprimant les éventuelles extensions (cas de la ligne X6590919.tmp1)
Voici pour l'instant, la commande que j'utilise:
Le résultat me donne ceci:
6574886 6574886
6590919 6590919
6595523 6595523
6616153 6616153
eb 1 03:33 /rep/tmp/X6633919 eb 1 03:33/rep/tmp/X6633919
eb 1 04:18 /rep/tmp/X6634439 eb 1 04:18 /rep/tmp/X6634439
eb 2 03:32 /rep/tmp/X6652664 eb 2 03:32 /rep/tmp/X6652664
eb 3 03:32 /rep/tmp/X6670904 eb 3 03:32 /rep/tmp/X6670904
eb 3 17:47 /rep/tmp/X6681867 eb 3 17:47 /rep/tmp/X6681867
eb 4 03:32 /rep/tmp/X6688134 eb 4 03:32 /rep/tmp/X6688134
eb 5 03:32 /rep/tmp/X6692885 eb 5 03:32 /rep/tmp/X6692885
Je ne comprends pas pourquoi seules les 4ères lignes sont correctes. Pourquoi j'obtiens un résultat faussé par la suite ? Est-ce lié au passage en février (Feb) ?
Avez-vous une idée ?
Merci d'avance pour votre aide.
Ka-El
Je souhaite retravailler chaque ligne d'un fichier texte "toto.txt" avec la commande while. mais au bout d'un certain nombre de ligne j'obtiens un résultat faussé.
Voici le contenu du fichier que j'utilise:
-rw-rw-r-- 1 toto groupe 8000 Jan 27 03:34 /rep/tmp/X6574886
-rw-rw-r-- 1 toto groupe 8000 Jan 28 03:32 /rep/tmp/X6590919.tmp1
-rw-rw-r-- 1 toto groupe 8000 Jan 29 03:32 /rep/tmp/X6595523
-rw-rw-r-- 1 toto groupe 8000 Jan 31 03:32 /rep/tmp/X6616153
-rw-rw-r-- 1 toto groupe 8000 Feb 1 03:33 /rep/tmp/X6633919
-rw-rw-r-- 1 toto groupe 40000 Feb 1 04:18 /rep/tmpXF6634439
-rw-rw-r-- 1 toto groupe 8000 Feb 2 03:32 /rep/tmp/FX652664
-rw-rw-r-- 1 toto groupe 8000 Feb 3 03:32 /rep/tmp/FX670904
-rw-rw-r-- 1 toto groupe 19966 Feb 3 17:47 /rep/tmp/X6681867
-rw-rw-r-- 1 toto groupe 8000 Feb 4 03:32 /rep/tmp/FX688134
-rw-rw-r-- 1 toto groupe 8000 Feb 5 03:32 /rep/tmp/FX692885
Mon but est de variabiliser les numéros de fin de ligne en supprimant les éventuelles extensions (cas de la ligne X6590919.tmp1)
Voici pour l'instant, la commande que j'utilise:
while read line do A="${line#*X}" B="${A%.*}" echo "${A} ${B}" done < toto.txt
Le résultat me donne ceci:
6574886 6574886
6590919 6590919
6595523 6595523
6616153 6616153
eb 1 03:33 /rep/tmp/X6633919 eb 1 03:33/rep/tmp/X6633919
eb 1 04:18 /rep/tmp/X6634439 eb 1 04:18 /rep/tmp/X6634439
eb 2 03:32 /rep/tmp/X6652664 eb 2 03:32 /rep/tmp/X6652664
eb 3 03:32 /rep/tmp/X6670904 eb 3 03:32 /rep/tmp/X6670904
eb 3 17:47 /rep/tmp/X6681867 eb 3 17:47 /rep/tmp/X6681867
eb 4 03:32 /rep/tmp/X6688134 eb 4 03:32 /rep/tmp/X6688134
eb 5 03:32 /rep/tmp/X6692885 eb 5 03:32 /rep/tmp/X6692885
Je ne comprends pas pourquoi seules les 4ères lignes sont correctes. Pourquoi j'obtiens un résultat faussé par la suite ? Est-ce lié au passage en février (Feb) ?
Avez-vous une idée ?
Merci d'avance pour votre aide.
Ka-El
A voir également:
- Commande while avec résultat insastifaisant
- Invite de commande - Guide
- Commande terminal mac - Guide
- Resultat foot - Télécharger - Vie quotidienne
- Commande dism - Guide
- Lexer resultat - Télécharger - Sport
2 réponses
Salut,
À mon avis c'est ton fichier toto.txt qui est mal formaté (caractère non-imprimable/exotique dans certaines lignes), parce que chez moi tout marche bien :
Que renvoie
À mon avis c'est ton fichier toto.txt qui est mal formaté (caractère non-imprimable/exotique dans certaines lignes), parce que chez moi tout marche bien :
$ ./foo.sh
6574886 6574886
6590919.tmp1 6590919
6595523 6595523
6616153 6616153
6633919 6633919
F6634439 F6634439
652664 652664
670904 670904
6681867 6681867
688134 688134
692885 692885
Que renvoie
cat -A toto.txt?
Ok je crois que j'ai identifié d'où vient le problème.
En fait "dans la vrai vie" les fichiers commence par "F" :
exemple : F6574886
Du coup la variable A="${line#*F}" bloque sur le "F" de "Feb" ...
Quelqu'un sait comment je peux contourner le "Feb" pour filtrer uniquement le numéro de fin de ligne ?
En fait "dans la vrai vie" les fichiers commence par "F" :
exemple : F6574886
Du coup la variable A="${line#*F}" bloque sur le "F" de "Feb" ...
Quelqu'un sait comment je peux contourner le "Feb" pour filtrer uniquement le numéro de fin de ligne ?
Merci pour ta réponse.
Malheureusement la commande ne donne pas de piste.
Voici le résultat:
-rw-rw-r-- 1 toto groupe 8000 Jan 27 03:34 /rep/tmp/X6574886$
-rw-rw-r-- 1 toto groupe 8000 Jan 28 03:32 /rep/tmp/X6590919.tmp1$
-rw-rw-r-- 1 toto groupe 8000 Jan 29 03:32 /rep/tmp/X6595523$
-rw-rw-r-- 1 toto groupe 8000 Jan 31 03:32 /rep/tmp/X6616153$
-rw-rw-r-- 1 toto groupe 8000 Feb 1 03:33 /rep/tmp/X6633919$
-rw-rw-r-- 1 toto groupe 40000 Feb 1 04:18 /rep/tmp/X6634439$
-rw-rw-r-- 1 toto groupe 8000 Feb 2 03:32 /rep/tmp/X6652664$
-rw-rw-r-- 1 toto groupe 8000 Feb 3 03:32 /rep/tmp/X6670904$
-rw-rw-r-- 1 toto groupe 19966 Feb 3 17:47 /rep/tmp/X6681867$
-rw-rw-r-- 1 toto groupe 8000 Feb 4 03:32 /rep/tmp/X6688134$
-rw-rw-r-- 1 toto groupe 8000 Feb 5 03:32 /rep/tmp/X6692885$
-rw-rw-r-- 1 toto groupe 2238 Feb 2 17:17 /rep/tmp/X6663382$
Je n'ai fait qu'un vulgaire copier/coller de ton fichier (1er post) et ça marche bien pour moi ;-\
Essaie avec cette commande ci-dessous pour voir si le résultat est mieux ou apreil :
Comme j'e l'indique ci-dessous, c'est le "F" de "Feb" qui me donne ce résultat...