Reserver un nombre de caractere a un champ

Résolu/Fermé
grisfff - 30 avril 2009 à 10:57
 grisfff - 30 avril 2009 à 14:26
Bonjour,

je debute en shell et j'ai un pti souci a partager ac vous
j'ai en sortie d'un script shell une ligne de la forme:
a | bb | c | ddd | e | f
je voudrai prendre le champ "ddd" lui reserver 7 caractere entre les " | ", en gros le remplacer par " ddd"
sachant ke les champs sont differents a chaque foi


merci

8 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
30 avril 2009 à 11:01
Salut,

Il faudrait peut être nous montrer la commande qui formate ta ligne de sortie, non ?

A la limite nous montrer ton script ainsi que le(s) fichier(s) traité(s) en aval, histoire qu'on sache un peu comment s'y prendre ;-))
0
okey :)

j'ai un fichier log de plusieur lignes de la meme forme que "a | bb | c | ddd | e | f" sauf que le champ ddd s'ecrit déja sur 7 caractere " a | bb | c | ddd | e | f
je fait dans mon script

cat fichier.log | while read ligne
do
if #condition pour garder que klk ligne# ; then
echo $ligne >> fichier2.log
fi
done
echo $(tail -1 fichier2.log) #afin de recuperer la derniere ligne des fichiers gardé


tout marche bien sauf que dans la ligne recuperé dés quil y a plusieurs espaces qui se suivent ça se réduit en un seul (apparament c'est cat qui fait cela)

j'espere que j'ai bien resumé la situation
si vous avez une solution au niveau de cat :) ce serai cool
sinon si je peu remplacer "ddd" par " ddd"
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
30 avril 2009 à 13:12
cat fichier.log | while read ligne
do
if #condition pour garder que klk ligne# ; then
echo "$ligne" >> fichier2.log
fi
done
echo $(tail -1 fichier2.log) 
Ça devrait régler ton problème ;-))
0
oui j'avais pensé a ça ("$ligne") mais rien ne change , les groupements d'espaces sont tjr reduits a un seul ;-/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
30 avril 2009 à 14:05
[tmpfs]$ cat plop
a | bb |  c  |  ddd  |  e | f

[tmpfs]$ cat plop |while read line;do echo $line;done  # sans guillemets
a | bb | c | ddd | e | f

[tmpfs]$ cat plop |while read line;do echo "$line";done  # avec guillemets
a | bb |  c  |  ddd  |  e | f

[tmpfs]$
;-\
0
ahhhhh ouiiiiiiiiii
DSL, le probleme vien de echo $(tail -1 fichier2.log)


bash-3.00$ cat plop.log 
aaa
aaa
a           a                a
bash-3.00$ echo $(tail -1 plop.log)
a a a
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
30 avril 2009 à 14:25
echo "$(tail -1 plop.log)"
0
:-))

c réglé

echo "$(tail -1 fichier2.log)"
0