#1 Le 28/01/2021, à 19:07
- philoeil
[RESOLU] Quel caractère de séparation est le plus pertinent
Bonjour,
Existe-t-il un caractère pertinent qui ne risque pas de se retrouver dans les chemins de dossiers, fichiers ?
Je m'explique un peu :
Dans un script réalisé sur le traitement de sauvegardes et recherche de doublons j'ai utilisé
dans des substitutions de paramètres traitant des chemins de dossier avec sed le caractère de séparation @
dans des fichiers resultats j'ai séparé les résultats par le caractère §.
Jusqu'à présent je n'ai pas détecté de problèmes mais je sens bien que ce n'est pas parfait
puisque ces 2 caractères ne sont pas interdits et peuvent se retrouver das des noms de répertoires ou fichier (même si sans doute peu fréquent)
J'ai trouvé | et !
mais pour une mauvaise expérience avec *
je préfère demander ....
Merci
Dernière modification par philoeil (Le 06/02/2021, à 16:14)
Hors ligne
#2 Le 28/01/2021, à 19:15
- Watael
Re : [RESOLU] Quel caractère de séparation est le plus pertinent
autant que je sache, sur Linux, (parce que ce n'est pas vrai pour certains UNIX) seul le caractère NULL (\0) n'est pas autorisé.
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#3 Le 28/01/2021, à 20:04
- Zakhar
Re : [RESOLU] Quel caractère de séparation est le plus pertinent
Réponse courte : ça dépend !
Détails :
.... du filesystem !
Regarde là : https://en.wikipedia.org/wiki/Compariso … le_systems
Par exemple, en ext4 (standard Linux) tout est autorisé dans un nom de fichier sauf zéro binaire et / réservé aux séparations de répertoire.
Mais il y a tout un tas d'autres filesystems qui ont bien d'autres restrictions.
Après, ça peut être très exotique mais expliqué. Par exemple j'ai écrit un "filesystem" pour le service de stockage 1fichier.com, ça se trouve ici :
[1fichier] "Montez" votre stockage 1fichier en une commande simple !
De façon "normale", le montage "raw" expose les limitations de jeu de caractères imposées par la solution de stockage, c'est à dire en plus des classiques \0 et /, interdit $ < > / et `, avec en plus ' et " pour les répertoires. Pas moyen de faire autrement puisque 1fichier.com interdit cela dans les noms de fichier/répertoire.
Le mode par défaut fait une "traduction" pour l'utilisateur puisse utiliser l'ensemble des caractères "standard linux" (tout sauf / et \0) au détriment de la longueur maximale du nom.
Donc en fait, tu peux considérer que (hélas !) tous les caractères sont autorisés !... sauf / et \0... mais ça ne va pas beaucoup t'aider pour ton "sed" !..
Dernière modification par Zakhar (Le 28/01/2021, à 20:06)
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#4 Le 29/01/2021, à 09:36
- Hizoka
Re : [RESOLU] Quel caractère de séparation est le plus pertinent
Salut,
Pour éviter ce genre de problème avec sed, je fais ce genre de chose :
ma_variable="bla bla bla § bla bla"
# On change le caractère qui sert à sed par -~@~- ou tout autre de suite improbable sans impacte sur ce qu'on demande à sed
ma_variable="${ma_variable//§/-~@~-}"
# On fait le traitement sed en utilisant § comme séparateur
retour_sed=$(sed ...)
# On remet le caractère spécial
retour_sed="${retour_sed//-~@~-/§}"
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#5 Le 29/01/2021, à 13:28
- Watael
Re : [RESOLU] Quel caractère de séparation est le plus pertinent
pas besoin de transcrire, puis retranscrire.
il suffit de protéger, dans la variable, le caractère de séparation choisi :
$ maVar='/chemin/fichier'
$ sed 's/'"${maVar//\//\\/}"'/remplacement/' fichier
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#6 Le 29/01/2021, à 22:12
- Hizoka
Re : [RESOLU] Quel caractère de séparation est le plus pertinent
Encore mieux ! Merci
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#7 Le 30/01/2021, à 07:33
- philoeil
Re : [RESOLU] Quel caractère de séparation est le plus pertinent
Bonjour,
Merci Hizoka
Merci Zakhar pas encore eu le temps de tout lire pour comprendre
Merci Watael, je n'arrive pas à mettre en œuvre correctement ton conseil ou est mon erreur ?
Le fichier CheminProjet :
$ cat ProjetT6_Racine
TailleMax=1000000
NombreFichiersMax=1000
FAD=ActionDoublons.txt
Info1=/home/phil/Documents/JeCodeShell/TrouvDoublons/JournalT6SavTestSauvegarde/11111.SauvegardeInfo1.txt
le script test
#/!bin/bash
# parametres
CheminProjet="./ProjetT6_Racine"
TitreParam="Info1="
TmpVarParam="/home/phil/Documents/JeCodeShell/TrouvDoublons/JournalT6SavTestSauvegarde/OOOOO.SauvegardeInfo1.txt"
sed -i "s@^$TitreParam.*@$TitreParam$TmpVarParam@" "$CheminProjet"
cat "$CheminProjet"
TmpVarParam="/home/phil/Documents/JeCodeShell/TrouvDoublons/JournalT6SavTestSauvegarde/XXXXX.SauvegardeInfo1.txt"
sed 's/'"${^$TitreParam.*//\//\\/}"'$TitreParam$TmpVarParam' "$CheminProjet"
cat "$CheminProjet"
L'erreur
./ExtractLignes1.sh: ligne 10: ${^$TitreParam.*//\//\\/} : mauvaise substitution
Merci
Hors ligne
#8 Le 30/01/2021, à 12:48
- Hizoka
Re : [RESOLU] Quel caractère de séparation est le plus pertinent
Ta commande ${^$TitreParam.*//\//\\/} est mauvaise.
Il y a un $ de trop: ${^$TitreParam.*//\//\\/}
A quoi sert le ^ ? ${^$TitreParam.*//\//\\/}
A quoi sert le .* ? ${^$TitreParam.*//\//\\/}
en bash tu ne peux faire qu'une action à la fois :
${TitreParam//\//\\/} : remplacement de caractéres
${TitreParam^} : Mise en majuscule de la 1ere lettre
Impossible de combiner les 2.
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#9 Le 30/01/2021, à 17:03
- philoeil
Re : [RESOLU] Quel caractère de séparation est le plus pertinent
Bonjour Hizoka,
J'ai essayé de mutiples combinaisons sans succès avec ou sans le $ et en déplaçant ^ et .* toujours en echec pour comprendre le message de Watael
A quoi sert le ^ ? ${^$TitreParam.*//\//\\/}
A essayer de reproduire ce qui est fait ici
sed -i "s@^$TitreParam.*@$TitreParam$TmpVarParam@" "$CheminProjet"
c'est à dire chercher dans le fichier $CheminProjet la chaine $TitreParam en début de ligne
A quoi sert le .* ? ${^$TitreParam.*//\//\\/}
A essayer de reproduire ce qui est fait ici
sed -i "s@^$TitreParam.*@$TitreParam$TmpVarParam@" "$CheminProjet"
c'est à dire chercher dans le fichier $CheminProjet la chaine $TitreParam suivi d'une suite de caractères quelconque
Pour mieux illustrer par un exemple
Le $CheminProjet de départ
TailleMax=1000000
NombreFichiersMax=1000
FAD=ActionDoublons.txt
Info1=/home/phil/Documents/JeCodeShell/TrouvDoublons/JournalT6SavTestSauvegarde/ZZZZZZZ.SauvegardeInfo1.txt
Le résultat du script avec l'erreur
$ ./ExtractLignes1.sh
TailleMax=1000000
NombreFichiersMax=1000
FAD=ActionDoublons.txt
Info1=/home/phil/Documents/JeCodeShell/TrouvDoublons/JournalT6SavTestSauvegarde/OOOOO.SauvegardeInfo1.txt
sed: -e expression n°1, caractère 13: option inconnue pour « s »
TailleMax=1000000
NombreFichiersMax=1000
FAD=ActionDoublons.txt
Info1=/home/phil/Documents/JeCodeShell/TrouvDoublons/JournalT6SavTestSauvegarde/OOOOO.SauvegardeInfo1.txt
phil@phil-G750JH:~/Documents/JeCodeShell/TestSED$
La 1ere commande marche
sed -i "s@^$TitreParam.*@$TitreParam$TmpVarParam@" "$CheminProjet"
et l'essai de la seconde échoue
sed "s/^{$TitreParam//\//\\/}.*/$TitreParam$TmpVarParam/" "$CheminProjet"
sed: -e expression n°1, caractère 13: option inconnue pour « s »
Hors ligne
#10 Le 30/01/2021, à 18:23
- Hizoka
Re : [RESOLU] Quel caractère de séparation est le plus pertinent
Presque :
sed "s/^${TitreParam//\//\\/}.*/${TitreParam//\//\\/}$TmpVarParam/" "$CheminProjet"
Attention à ne pas confondre la variable (${TitreParam//\//\\/}) et ce que l'expression régulière (^ et .*).
Et il faut bien remplacer tes caractères dans les 2 parties de ton sed.
C'est un chouille plus clair visuellement avec des arobases je trouve.
sed "s@^${TitreParam//@/\\@}.*@${TitreParam//@/\\@}$TmpVarParam@" "$CheminProjet"
Dernière modification par Hizoka (Le 30/01/2021, à 18:28)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#11 Le 30/01/2021, à 18:38
- philoeil
Re : [RESOLU] Quel caractère de séparation est le plus pertinent
Bonjour Hizoka
# On fait le traitement sed en utilisant § comme séparateur
retour_sed=$(sed ...)
Chez moi cela ne marche pas
Si dessous des tests avec différents caractères de séparation certains marchent § echoue
Mais le quel choisir ?
@ non trop présent
§ me semblait bien mais echec
! ou | je me demande si peu poser un problème ?
#/!bin/bash
# parametres
CheminProjet="./ProjetT6_Racine"
TitreParam="Info1="
TmpVarParam="/home/phil/Documents/JeCodeShell/TrouvDoublons/JournalT6SavTestSauvegarde/OOOOO.SauvegardeInfo1.txt"
sed -i "s@^$TitreParam.*@$TitreParam$TmpVarParam@" "$CheminProjet"
echo -e "\n resultat de l'opération sed delimitateur @ :"
cat "$CheminProjet"
TmpVarParam="/home/phil/Documents/JeCodeShell/TrouvDoublons/JournalT6SavTestSauvegarde/XXXXX.SauvegardeInfo1.txt"
sed -i "s|^$TitreParam.*|$TitreParam$TmpVarParam|" "$CheminProjet"
echo -e "\n resultat de l'opération sed :delimitateur |"
cat "$CheminProjet"
TmpVarParam="/home/phil/Documents/JeCodeShell/TrouvDoublons/JournalT6SavTestSauvegarde/33333333.SauvegardeInfo1.txt"
sed -i "s"!"^$TitreParam.*"!"$TitreParam$TmpVarParam"!"" "$CheminProjet"
echo -e "\n resultat de l'opération sed delimitateur ! :"
cat "$CheminProjet"
TmpVarParam="/home/phil/Documents/JeCodeShell/TrouvDoublons/JournalT6SavTestSauvegarde/4444444.SauvegardeInfo1.txt"
sed -i "s§^$TitreParam.*§$TitreParam$TmpVarParam§" "$CheminProjet"
echo -e "\n resultat de l'opération sed delimitateur §:"
cat "$CheminProjet"
Resultat avec l'erreur sur le te § :
$ ./SED§ErrV1.sh
resultat de l'opération sed delimitateur @ :
TailleMax=1000000
NombreFichiersMax=1000
FAD=ActionDoublons.txt
Info1=/home/phil/Documents/JeCodeShell/TrouvDoublons/JournalT6SavTestSauvegarde/OOOOO.SauvegardeInfo1.txt
resultat de l'opération sed :delimitateur |
TailleMax=1000000
NombreFichiersMax=1000
FAD=ActionDoublons.txt
Info1=/home/phil/Documents/JeCodeShell/TrouvDoublons/JournalT6SavTestSauvegarde/XXXXX.SauvegardeInfo1.txt
resultat de l'opération sed delimitateur ! :
TailleMax=1000000
NombreFichiersMax=1000
FAD=ActionDoublons.txt
Info1=/home/phil/Documents/JeCodeShell/TrouvDoublons/JournalT6SavTestSauvegarde/33333333.SauvegardeInfo1.txt
sed: -e expression n°1, caractère 2: delimiter character is not a single-byte character
resultat de l'opération sed delimitateur §:
TailleMax=1000000
NombreFichiersMax=1000
FAD=ActionDoublons.txt
Info1=/home/phil/Documents/JeCodeShell/TrouvDoublons/JournalT6SavTestSauvegarde/33333333.SauvegardeInfo1.txt
Hors ligne
#12 Le 30/01/2021, à 21:24
- Zakhar
Re : [RESOLU] Quel caractère de séparation est le plus pertinent
@Hizoka, je ne pense pas que vous arriverez avec sed à un truc à 100%. Même en remplaçant le caractère par -~@~- quid si cette séquence existe déjà dans un nom de fichier !
@Wattael, oui, ça a l'air de fonctionner effectivement !
Inconvénient 1, c'est un "bashism"
Inconvénient 2, on refait la substitution à chaque application de sed.
Donc en fait, la solution "simple" et non bashism ne serait-elle pas simplement d'écrire :
$ maVar='\/chemin\/fichier'
$ subst='/chemin/fichier=abcd'
$ echo "$subst" | sed "s/${maVar}/foobar/"
foobar=abcd
A moins que $maVar soit effectivement aussi une variable (lue dans un fichier, en paramètre d'entrée, etc...), auquel cas, pour éviter le "bashism", on peut la transformer une première fois avec un sed dans une variable "escapée".
Dernière modification par Zakhar (Le 30/01/2021, à 21:26)
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#13 Le 30/01/2021, à 21:33
- Watael
Re : [RESOLU] Quel caractère de séparation est le plus pertinent
inconvénient1: et alors ? il est interdit d'utiliser bash ? c'est pas comme les accolades inutiles.
inconvénient2 : SI on utilise plusieurs fois la variable
var='/bla/bla'
varSed="${var//\//\\/}"
sed 's/'"$varSed"'/remplacement/' fichier
et au pire
varSed=$(echo "$var" | sed 's@/@\\/@g')
Dernière modification par Watael (Le 30/01/2021, à 21:34)
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#14 Le 30/01/2021, à 22:04
- philoeil
Re : [RESOLU] Quel caractère de séparation est le plus pertinent
Bonjour,
Cela avance mais ce n'est pas encore bon
Je Cherche l'erreur ....
Le script test
#/!bin/bash
# parametres
CheminProjet="./ProjetT6_Racine"
TitreParam="Info1="
TmpVarParam="/home/phil/Documents/JeCodeShell/TrouvDoublons/JournalT6SavTestSauvegarde/OOOOO.SauvegardeInfo1.txt"
sed -i "s@^$TitreParam.*@$TitreParam$TmpVarParam@" "$CheminProjet"
echo "result substitution 00000"
cat "$CheminProjet"
TmpVarParam="/home/phil/Documents/JeCodeShell/TrouvDoublons/JournalT6SavTestSauvegarde/XXXXX.SauvegardeInfo1.txt"
# sed "s/^{$TitreParam//\//\\/}.*/$TitreParam$TmpVarParam/" "$CheminProjet"
sed "s/^${TitreParam//\//\\/}.*/${TitreParam//\//\\/}$TmpVarParam/" "$CheminProjet"
echo "result substitution XXXXXXX"
cat "$CheminProjet"
TmpVarParam="/home/phil/Documents/JeCodeShell/TrouvDoublons/JournalT6SavTestSauvegarde/333333.SauvegardeInfo1.txt"
# sed "s/^{$TitreParam//\//\\/}.*/$TitreParam$TmpVarParam/" "$CheminProjet"
sed "s@^${TitreParam//@/\\@}.*@${TitreParam//@/\\@}$TmpVarParam@" "$CheminProjet"
echo "result substitution 3333333"
cat "$CheminProjet"
Le resultat
$ ./ExtractLignes1.sh
result substitution 00000
TailleMax=1000000
NombreFichiersMax=1000
FAD=ActionDoublons.txt
Info1=/home/phil/Documents/JeCodeShell/TrouvDoublons/JournalT6SavTestSauvegarde/OOOOO.SauvegardeInfo1.txt
sed: -e expression n°1, caractère 20: option inconnue pour « s »
result substitution XXXXXXX
TailleMax=1000000
NombreFichiersMax=1000
FAD=ActionDoublons.txt
Info1=/home/phil/Documents/JeCodeShell/TrouvDoublons/JournalT6SavTestSauvegarde/OOOOO.SauvegardeInfo1.txt
TailleMax=1000000
NombreFichiersMax=1000
FAD=ActionDoublons.txt
Info1=/home/phil/Documents/JeCodeShell/TrouvDoublons/JournalT6SavTestSauvegarde/333333.SauvegardeInfo1.txt
result substitution 3333333
TailleMax=1000000
NombreFichiersMax=1000
FAD=ActionDoublons.txt
Info1=/home/phil/Documents/JeCodeShell/TrouvDoublons/JournalT6SavTestSauvegarde/OOOOO.SauvegardeInfo1.txt
Merci
Hors ligne
#15 Le 30/01/2021, à 22:37
- Watael
Re : [RESOLU] Quel caractère de séparation est le plus pertinent
d'abord, {$ ???
ensuite, fais attention à la variable que tu modifies et qui contient (ou non) le caractère à protéger.
philoeil, ouvre les yeux : un seul œil semble ne pas suffire.
Dernière modification par Watael (Le 31/01/2021, à 13:50)
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#16 Le 31/01/2021, à 10:03
- Zakhar
Re : [RESOLU] Quel caractère de séparation est le plus pertinent
inconvénient1: et alors ? il est interdit d'utiliser bash ?
Non, ce n'est pas interdit bien sûr, encore que le shell par défaut d'Ubuntu ne soit plus bash depuis des lustres, mais dash.
Il y quand même un différence de performance nettement mesurable au profit de dash sur des "gros" scripts. Je te laisse faire le test !..
Par contre là où tu comprends ta douleur d'utiliser des "bahism" c'est quand tu n'as pas la possibilité d'utiliser bash, comme c'était le cas quand j'ai tenté de porter des scripts sur mon Synology (qui utilise ash et ne dispose pas de bash !)
Là tu te dis : "si seulement j'avais écrit en shell portable ! (POSIX)"
Depuis que j'ai eu à faire cet "exercice" de portage sur Synology, j'évite autant que faire ce peut les "bashism". Certains n'ont cependant pas d'équivalent comme le process substitution, et cette "feature" peut effectivement rendre possible des choses qui autrement nécessitent de faire "les pieds au mur" !..
Donc je fais en sorte que tous mes scripts (dans la mesure du possible/raisonnable) commencent pas :
#! /bin/sh
varSed=$(echo "$var" | sed 's@/@\\/@g')
Oui, ça c'est portable, et ce n'est guère plus long à écrire que la ligne de conversion de la variable brute en "bashism" !
Dernière modification par Zakhar (Le 31/01/2021, à 10:12)
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#17 Le 31/01/2021, à 13:55
- Watael
Re : [RESOLU] Quel caractère de séparation est le plus pertinent
soit, mais quand le posteur utilise bash, tu t'astreins tout de même à la stricte observance de la norme POSIX ?
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#18 Le 31/01/2021, à 14:26
- Zakhar
Re : [RESOLU] Quel caractère de séparation est le plus pertinent
Le posteur a visiblement envie d'apprendre ce qui est parfait. Il utilise sans doute bash "par défaut".
Quand ce n'est pas plus compliqué (une ligne sed au lieu d'une substitution "bashism"), autant utiliser la version portable non ?
Bien sûr dans les cas où un "process substitution" est indiqué, là comme c'est unique, ça fait du sens de limite la compatibilité.
Regarde par exemple un script que j'avais fait il y a 10 ans... pour traiter le format "XtremSplit" qui était utilisé à l'époque sur certains forums, et évidemment sans outil Linux (encore que l'exécutable fonctionnait sous Wine). Le script en question fonctionnait en fait 2 fois plus vite que l'original, merci les pipe/tee, etc...
Et il était qualifié avec tout un tas de NAS lesquels ne possédaient pas bash !..
Par contre les utilitaires GNU sont quand même bien indispensables car le "hack" pour le faire fonctionner avec la version simplifié de busybox est quand même bien affreux !
Bon, tout ça est de l'histoire ancienne (2010 !) je crois bien que plus personne n'utilise Xtremsplit, et heureusement !
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#19 Le 31/01/2021, à 14:38
- Watael
Re : [RESOLU] Quel caractère de séparation est le plus pertinent
quand je n'utilise pas de bashisme, je mets un /bin/sh en shebang,
mais ça ne dure jamais très longtemps.
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#20 Le 31/01/2021, à 14:45
- Zakhar
Re : [RESOLU] Quel caractère de séparation est le plus pertinent
Si c'est un petit truc juste pour toi et juste pour ta machine sans idée de portage ailleurs, c'est toi qui vois, ça ne fait guère de différence et n'a guère d'importance !
Sur les "gros" scripts, notamment avec beaucoup de boucles, dash fait une différence notable en performance.
Et toutes les commandes que tu passes sur ton terminal, sont en fait exécutées par bash qui est le défaut pour le terminal (même si dash est le shell par défaut).
Dernière modification par Zakhar (Le 31/01/2021, à 14:46)
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#21 Le 31/01/2021, à 18:15
- Hizoka
Re : [RESOLU] Quel caractère de séparation est le plus pertinent
sh limite plein de trucs quand même...
Ca t'oblige à utiliser echo + pipe :
varSed=$(echo "$var" | sed 's@/@\\/@g')
alors qu'on peut faire
varSed=$(sed 's@/@\\/@g' <<< "$var")
en bash.
Ça dépend vraiment de ce que tu veux faire, un truc portable ou limité à bash... mais comme tu le signales les terminaux utilises bash par défaut sur ubuntu... donc ça pousse à l'utiliser.
Oui, ça c'est portable, et ce n'est guère plus long à écrire que la ligne de conversion de la variable brute en "bashism" !
Ouais mais c'est pas la même rapidité d’exécution :
test="Super texte"
time for ((x=1; x<1000; x++))
do
resultat=$(echo "$test" | sed "s/Super/Petit/")
done
# ~ 3s
time for ((x=1; x<1000; x++))
do
resultat="${test//Super/Petit}"
done
# ~ 0.01sec
Et comme l'expliquer Watael dans un topic du forum, le but de dash est d'acceler le démarrage, une fois fait, plus de gros intérêt à l'utiliser s'il permet moins de chose (même si on pert en portabilité) en fonction du but recherché.
Si on veut quelques chose de portable, il faut le signaler dans la demande, à mon sens
Dernière modification par Hizoka (Le 31/01/2021, à 18:23)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#22 Le 31/01/2021, à 19:20
- Watael
Re : [RESOLU] Quel caractère de séparation est le plus pertinent
alors qu'un peut faire
eh ben non ! on utilise le Remplacement de paramètre !
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#23 Le 31/01/2021, à 21:19
- Hizoka
Re : [RESOLU] Quel caractère de séparation est le plus pertinent
Oui bien sur mais pas dans le cas d'un sed plus poussé.
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#24 Le 04/02/2021, à 19:15
- philoeil
Re : [RESOLU] Quel caractère de séparation est le plus pertinent
Bonjour,
Pour le moment mon script fonctionne avec la ligne
sed -i "s|^$TitreParam.*|$TitreParam$TmpVarParam|" "$CheminProjet"
Je n'ai vraiment pas compris comment mettre en oeuvre le message de Watael
Je suis curieux de voir la solution fonctionner, je ne la trouve pas
pas besoin de transcrire, puis retranscrire.
il suffit de protéger, dans la variable, le caractère de séparation choisi :$ maVar='/chemin/fichier'
$ sed 's/'"${maVar//\//\\/}"'/remplacement/' fichier
Merci
Hors ligne
#25 Le 04/02/2021, à 19:53
- Hizoka
Re : [RESOLU] Quel caractère de séparation est le plus pertinent
Bah, je te l'ai donné en message 10 :
sed -i "s|^${TitreParam//|/\\|}.*|${TitreParam//|/\\|}$TmpVarParam|" "$CheminProjet"
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne