Reserver un nombre de caractere a un champ

Résolu/Fermé
Signaler
-
 grisfff -
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

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 900
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
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 900
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
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 900
[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
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 900
echo "$(tail -1 plop.log)"
0
:-))

c réglé

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