Problème pour trier les informations d'un fichier

Résolu/Fermé
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020 - 6 déc. 2016 à 11:53
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020 - 6 déc. 2016 à 14:47
Bonjour,
j'ai la variable $toto qui peut parfois être un nom commun (par exemple "Robert" ou "Martha").
Mais dans d'autre cas cette variable peut me donner l'information "nom inconnu".
Je souhaite faire une boucle for qui va différencier les nom commun des "nom inconnu".
A noter que Je construit la variable à partir d'un fichier.
Voilà ce que cela donne pour l'instant:
for i in `cat fichier`
do
toto=`(je ne met pas le détail de la commande, mais le résultat peut être donc soit "robert" ou "nom inconnu")`
if [ ${toto} == ${toto} ]; then
echo $toto >> fichier_tri.txt
else
echo "anonyme" >> fichier_tri.txt
fi
done

Pour l'instant, le fichier_tri me liste bien les noms commun mais l'information "anonyme" n'apparait pas.
Vous savez pourquoi ?
Merci
A voir également:

1 réponse

UnGnU Messages postés 1158 Date d'inscription lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020 157
6 déc. 2016 à 12:01
Salut,

for i in `cat fichier`
Ben déjà là, ce n'est pas bon ;-(
Mieux vaut privilégier la syntaxe :
while read i; do blablabla; done < fichier


Ensuite :
toto=`commandes de tri`
if [ ${toto} == ${toto} ]; then

Forcément que la condition est vraie à chaque fois ;-(
0
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020
6 déc. 2016 à 12:22
Merci Ungnu,
Mais j'y tiens à mon for, car en réalité il est un peu plus complexe ;-)

Par ailleurs, dans ton exemple, je ne vois pas à quel moment, tu vas pouvoir indiquer l'information "anonyme" dans le fichier final ?

En fait, j'ai quitter le shell script depuis quelques années et j'ai bien du mal à m'y remettre... :-(
0
UnGnU Messages postés 1158 Date d'inscription lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020 157 > Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020
6 déc. 2016 à 12:43
Par ailleurs, dans ton exemple, je ne vois pas à quel moment, tu vas pouvoir indiquer l'information "anonyme" dans le fichier final ?
En fait je ne faisais que pointer du doigt l'incohérence de ton égalité (les 2 variables sont forcément identiques).
0
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020 > UnGnU Messages postés 1158 Date d'inscription lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020
6 déc. 2016 à 13:28
Ben oui tu as raison ! (je suis nul...)
Du coup, comment je peux faire pour différencier $toto quand j'ai l'information "nom inconnu" (avec un joli espace entre les mots) et quand $toto me donne un nom commun de type Robert ou Patoche ?
0
UnGnU Messages postés 1158 Date d'inscription lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020 157 > Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020
6 déc. 2016 à 14:09
De toute façon ça ne change rien, dans la mesure où que ce soit l'un ou l'autre tu envoies tout dans le même fichier ;-\

Puis ta boucle
for
, comme je te l'ai dit, n'est pas adéquate pour le traitement que tu veux faire, puisque elle ne sait pas gérer les espaces.

Pour faire bref, quand elle rencontre "nom inconnu", elle traite d'abord "nom" puis ensuite "inconnu", ce qui n'arriverait pas avec une boucle
while


Un exemple :

$ cat fich
toto
nom inconnu
tata
autre nom inconnu

$ for i in $(cat fich); do echo "${i}";done
toto
nom
inconnu
tata
autre
nom
inconnu

$ while read i; do echo "${i}";done < fich
toto
nom inconnu
tata
autre nom inconnu
0
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020 > UnGnU Messages postés 1158 Date d'inscription lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020
6 déc. 2016 à 14:47
Oui finalement c'est pas mal du tout.
Je prends !
merci beaucoup pour ton aide.
0