Commande \c et equivalent
Résolu
symone
-
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour le forum,
J'ai actuellement un petit soucie quand j'écris dans un fichier...
au cour du script, j'ai une boucle avec l'instruction comme suit :
myfile.txt est un tableau. Le problème étant que $myvar fait dans 90% des cas 8 caractères et, dans 10% des cas, myvar fait plus de 8 caractères et décale toute la ligne de mon tableau !
Comme "\c" insère 4 espaces, je pensais jouer dessus pour redécaler le tableau mais ... je sais pas comment faire :)
Quelqu'un aurait une solution? surtout qu'insérer un ensemble d'espaces n'est pas facile en shell, il n'en prend qu'un à chaque fois donc là, je sèche...
Merci beaucoup !
J'ai actuellement un petit soucie quand j'écris dans un fichier...
au cour du script, j'ai une boucle avec l'instruction comme suit :
echo "$myvar \c" >> myfile.txt"\c" permettant de continuer d'écrire sur la même ligne.
myfile.txt est un tableau. Le problème étant que $myvar fait dans 90% des cas 8 caractères et, dans 10% des cas, myvar fait plus de 8 caractères et décale toute la ligne de mon tableau !
Comme "\c" insère 4 espaces, je pensais jouer dessus pour redécaler le tableau mais ... je sais pas comment faire :)
Quelqu'un aurait une solution? surtout qu'insérer un ensemble d'espaces n'est pas facile en shell, il n'en prend qu'un à chaque fois donc là, je sèche...
Merci beaucoup !
A voir également:
- Commande \c et equivalent
- Invite de commande - Guide
- Équivalent coco - Accueil - Réseaux sociaux
- Commande terminal mac - Guide
- Equivalent coco - Accueil - Réseaux sociaux
- Equivalent wawacity - Accueil - Outils
5 réponses
Salut,
Pourquoi ne pas reformater ton fichier une fois fini ?
Zen my nuggets ;-)
Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot. <('')
Pourquoi ne pas reformater ton fichier une fois fini ?
$ cat brol--
12345678 12345678 12345678 12345678
12345678 12345678 12345678 12345678
12345678 12345678910 12345678
12345678 12345678910 12345678 12345678910 12345678
12345678 12345678 12345678
$ sed 's/\s\+/\t/g' brol
12345678 12345678 12345678 12345678
12345678 12345678 12345678 12345678
12345678 12345678910 12345678
12345678 12345678910 12345678 12345678910 12345678
12345678 12345678 12345678
Zen my nuggets ;-)
Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot. <('')
sans vouloir faire de contre pub à CCM, j'ai trouvé ceci pour continuer mes recherches...
http://www.developpez.net/forums/d246814/systemes/linux/shell-commandes-gnu/plusieurs-echo-meme-ligne/
http://www.developpez.net/forums/d246814/systemes/linux/shell-commandes-gnu/plusieurs-echo-meme-ligne/
Enfait il s'agit d'un script qu'un collègue a écrit (que j'essaie aujourd'hui de corriger) et je retrouve en effet quelque chose comme
| awk '{printf("%7.1f"), $3}'mais l'argument change d'un cas à l'autre :
%7.1fou
%5dou encore
%8scomme dubcek a proposé... je pense ducoup adopter sa proposition :) par contre je ne vois pas du tout comment l'adapter et ce que change les
f,
det
s...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Çà y est j'ai réussi! J'ai utilisé la 1ère solution de dubcek ; avec un printf ...
le
Pour ceux qui rament autant que moi, le lien suivant énonce tous ces arguments :
http://www.quennec.fr/gnulinux/programmation-shell-sous-gnulinux/le-langage-de-programmation-awk/la-fonction-printf
Merci à dubcek et zipe31 pour avoir animé le sujet et pour m'avoir dépatouillé!
echo "$MyVar \c" | awk '{printf("%17s"), $1}' >> MyFile.txt
le
%-8sétait insuffisant car, dès que ma chaîne faisait plus de 8 caractères, il y avait un décalage dans ma ligne, c'est pour çà que j'utilise
%17s, pour garder une belle marge :)
Pour ceux qui rament autant que moi, le lien suivant énonce tous ces arguments :
http://www.quennec.fr/gnulinux/programmation-shell-sous-gnulinux/le-langage-de-programmation-awk/la-fonction-printf
Merci à dubcek et zipe31 pour avoir animé le sujet et pour m'avoir dépatouillé!
par contre, il doit y avoir un problème : il me laisse le décallage et me remplace tous les "s" par des "t" :)
Quelle version de sed ?