Necesito y Applescript para reemplazar un texto como sigue:
Texto original:
string string string $ text1
string string string $ text2
text3
string string string $ text4
La salida requerida es:
$ text1
$ text2
text3
$ text4
Puedo hacerlo en el terminal con este comando:
$ echo "string string string $ text1
string string string $ text2
text3
string string string $ text4" | sed -r 's/^(.*)\$ ?(.) (.*)$/$ /g'
$ text1
$ text2
text3
$ text4
Por cierto, estoy usando bash versión 4.3.30 y sed 4.2.2, ambas de homebrew.
El problema aquí es que necesito hacerlo desde un applecript. Este es mi enfoque:
set commandString to "echo \"string string string $ text\" | sed -r 's|^(.*)\$ ?(.) (.*)$|$ \3|g'" as string
set formattedCode to do shell script commandString
Y me sale el siguiente error:
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 elimino la opción -r
, aparece un error diferente:
sed: 1: "s|^(.*)\$ ?(.) (.*)$|$ ...": not defined in the RE
Si elimino el , la salida debe ser
$
en lugar de $ text
, pero el comando sed
no hace nada y genera:
string string string $ text
Supuse que esto podría ser un problema con la versión sed
. Por lo tanto, si sustituyo sed
con /usr/local/bin/sed
, no volverá a hacer nada después de la línea set formattedCode to do shell script commandString
.
¿Alguien sabe dónde está el problema?