#1 Le 16/11/2020, à 08:37
- Smwa
[RESOLU] Bash - espaces et suppression caractères fin de ligne
Bonjour,
Toujours dans mon apprentissage du Bash je bloque un peu sur un petit détail.
Mes variables
monfichier=chemin/vers/mon/fichier
contenu du fichier
jaune
vert
blanc
rougeResultat souhaité :
jaune | vert | blanc | rougeJ'ai donc essayé :
variable=`cat $monfichier | tr "\n" "\ |\ " `et j'obtiens comme valeur de variable :
jaune|vert|blanc|rouge|Je ne parviens pas à maintenir les espace autour des pipes, et j'aimerai qu'il n'y ait pas le pipe à la fin de ma ligne, je n'arrive pas à trouver comment le supprimer.
je progresse mais mon point faible reste toujours les expressions régulières, métacaractères etc ![]()
Auriez-vous une piste s'il vous plaît ?
Merci pour votre attention et votre aide !
Bonne journée à tous ![]()
Dernière modification par Smwa (Le 16/11/2020, à 09:51)
Hors ligne
#2 Le 16/11/2020, à 09:08
- Hizoka

Re : [RESOLU] Bash - espaces et suppression caractères fin de ligne
Salut,
variable=`cat $monfichier | tr "\n" "\ |\ " `Beurk, si tu apprends, comment en arrives tu à utiliser ` qui est déprécié depuis longtemps ?
Pourquoi protéger les espaces ici ?
De toute facon, tr ne permet pas de changer par plusieurs caracteres.
Donc tu peux toujours les ajouter après coup.
variable=$(cat $monfichier | tr "\n" "|" )
variable="${variable/%|}" # Suppression du dernier |
variable="${variable//|/ | }" # Remplacement de tous les | par " | "Kubuntu 20.04 64bits
GUI d'extraction de piste de fichier mkv -- Vignettes personnalisées -- Select boosté aux hormones -- Générateur de barre de progression
Hors ligne
#3 Le 16/11/2020, à 09:24
- pingouinux

Re : [RESOLU] Bash - espaces et suppression caractères fin de ligne
Bonjour,
Autre solution :
$ variable=$(sed -z 's/\n/ | /g;s/...$/\n/' "$monfichier")
$ echo "$variable"
jaune | vert | blanc | rougeHors ligne
#4 Le 16/11/2020, à 09:27
- Smwa
Re : [RESOLU] Bash - espaces et suppression caractères fin de ligne
Bonjour et merci pour votre aide !
Vos deux réponses m'aident beaucoup.
@pingouinux
Je vais éplucher le manuel de sed, car je ne connaissais pas plus que ça , mais ça à l'air très utile !
@Hizoka
Salut,
variable=`cat $monfichier | tr "\n" "\ |\ " `Beurk, si tu apprends, comment en arrives tu à utiliser ` qui est déprécié depuis longtemps ?
Et bien ce sont les syntaxes que j'ai appris en cours ^^ j'ignorais que c'était déprécié.
Je veux bien savoir pourquoi du coup ! histoire d'apprendre proprement !
Hors ligne
#5 Le 16/11/2020, à 10:03
- Sciensous
Re : [RESOLU] Bash - espaces et suppression caractères fin de ligne
et sans les espaces:
paste -s -d'|' fichier![]()
antiX 19 (Debian Buster) et (L)Ubuntu focal 20.04
( sous LXDE et gnome-shell )
Hors ligne
#6 Le 16/11/2020, à 10:10
- Watael

Re : [RESOLU] Bash - espaces et suppression caractères fin de ligne
Et bien ce sont les syntaxes que j'ai appris en cours
avec un codeur, ou avec un mec entre deux périodes de vacances ?
parce qu'alors c'est soit un mauvais codeur, soit un prof. ![]()
Je veux bien savoir pourquoi du coup ! histoire d'apprendre proprement !
à cause de la pénibilité à les imbriquer, car les backticks requiert d'être protégés à l'intérieur d'autres backticks.
Dernière modification par Watael (Le 16/11/2020, à 10:13)
Welcome to sHell. · eval is evil.
Hors ligne
#7 Le 16/11/2020, à 11:26
- Smwa
Re : [RESOLU] Bash - espaces et suppression caractères fin de ligne
Et bien ce sont les syntaxes que j'ai appris en cours
avec un codeur, ou avec un mec entre deux périodes de vacances ?
parce qu'alors c'est soit un mauvais codeur, soit un prof.Je veux bien savoir pourquoi du coup ! histoire d'apprendre proprement !
à cause de la pénibilité à les imbriquer, car les backticks requiert d'être protégés à l'intérieur d'autres backticks.
Avec notre prof, qui est donc maître de conférence dans notre cursus universitaire ^^''
Après c'est peut-être moi aussi qui ait fait un mauvais amalgame !!
car au démarrage j'ai vraiment eu du mal avec la théorie, je commence tout juste à comprendre en pratiquant.
Il a très bien pu nous montrer les 2 manières, en nous précisant que l'une était dépréciée, et moi je ne l'ai peut-être pas retenu ou mal noté !! en cours magistral c'est parfois difficile de réussir à tout entendre, noter, comprendre. ![]()
Hors ligne
#8 Le 16/11/2020, à 11:28
- Hizoka

Re : [RESOLU] Bash - espaces et suppression caractères fin de ligne
parce qu'alors c'est soit un mauvais codeur, soit un prof.
Merci ![]()
Kubuntu 20.04 64bits
GUI d'extraction de piste de fichier mkv -- Vignettes personnalisées -- Select boosté aux hormones -- Générateur de barre de progression
Hors ligne
#9 Le 16/11/2020, à 12:02
- kamaris

Re : [RESOLU] Bash - espaces et suppression caractères fin de ligne
Autre solution, en utilisant vraiment que bash :
variable=$(printf '%s | ' $(<fichier))
echo ${variable% | }Hors ligne
#10 Le 16/11/2020, à 12:11
- Watael

Re : [RESOLU] Bash - espaces et suppression caractères fin de ligne
parce que chaque ligne du fichier ne contient qu'un seul mot, mais si l'une d'elles en comportait plusieurs... ![]()
toujours en bash :
$ mapfile -t ar <"$fichier"
$ (IFS='|'; echo "${ar[*]}")
jaune noir|vert|blanc|rougeDernière modification par Watael (Le 16/11/2020, à 12:13)
Welcome to sHell. · eval is evil.
Hors ligne