J'ai besoin d'un Applescript pour remplacer un texte comme suit :
Texte original :
string string string $ text1
string string string $ text2
text3
string string string $ text4
La sortie requise est :
$ text1
$ text2
text3
$ text4
Je peux le faire dans le terminal avec cette commande :
$ echo "string string string $ text1
string string string $ text2
text3
string string string $ text4" | sed -r 's/^(.*)\$ ?(.) (.*)$/$ \3/g'
$ text1
$ text2
text3
$ text4
Au fait, j'utilise bash version 4.3.30 et sed 4.2.2, tous deux issus de homebrew.
Le problème est que je dois le faire à partir d'un applescript. Voici mon approche :
set commandString to "echo \"string string string $ text\" | sed -r 's|^(.*)\\$ ?(.) (.*)$|$ \\3|g'" as string
set formattedCode to do shell script commandString
Et j'obtiens l'erreur suivante :
error "sed: illegal option -- r
usage: sed script [-Ealn] [-i extension] [file ...]
sed [-Ealn] [-i extension] [-e script] ... [-f script_file] ... [file ...]" number 1
Si je retire le -r
j'obtiens une erreur différente :
sed: 1: "s|^(.*)\$ ?(.) (.*)$|$ ...": \3 not defined in the RE
Si je retire le \3
la sortie doit être $
au lieu de $ text
mais sed
la commande ne fait rien et elle sort :
string string string $ text
Je suppose que cela pourrait être un problème avec sed
version. Donc, si je remplace sed
avec /usr/local/bin/sed
il ne fait plus rien après la ligne set formattedCode to do shell script commandString
.
Quelqu'un sait où se trouve le problème ?