Sed 转义单引号

Sed 转义单引号,sed,applescript,Sed,Applescript,我想用单引号替换下面示例中sed命令中的双引号 set new_string to do shell script "echo " & quoted form of list_string & " | sed -e 's/$/\"/' -e 's/^/\"/' -e 's/^/+/'" 但是,如果我用单引号替换双引号,我会得到一个错误,有没有办法转义单引号 我不是sed忍者,因此任何关于如何进行此操作的提示都非常感谢。您需要注意哪些引号是由sed解析的,哪些引号是由调用sed的

我想用单引号替换下面示例中sed命令中的双引号

set new_string to do shell script "echo " & quoted form of list_string & " | sed -e 's/$/\"/' -e 's/^/\"/' -e 's/^/+/'"
但是,如果我用单引号替换双引号,我会得到一个错误,有没有办法转义单引号


我不是sed忍者,因此任何关于如何进行此操作的提示都非常感谢。

您需要注意哪些引号是由
sed
解析的,哪些引号是由调用
sed
的环境解析的。
sed
的正常调用来自shell脚本,但是(根据您的标记),您似乎是从AppleScript调用它

从一个shell脚本你会说

| sed -e 's/$/'\''/' -e 's/^/'\''/' -e 's/^/+/'

但是我不知道sh风格的转义规则是否对您有效,或者您是否需要另外转义
\

您需要小心
sed
正在解析哪些引号,以及调用
sed
的环境正在解析哪些引号。
sed
的正常调用来自shell脚本,但是(根据您的标记),您似乎是从AppleScript调用它

从一个shell脚本你会说

| sed -e 's/$/'\''/' -e 's/^/'\''/' -e 's/^/+/'

但是我不知道sh样式的转义规则是否对您有效,或者如果您想使用sed将
替换为
,是否需要额外转义

sed 's/"/\x27/g' yourFile


\x27 - single
\x22 - double
它可以使代码看起来更干净,并且减少逃逸

请参阅测试:

kent$  cat quote.tmp 
""""""

kent$  sed 's/"/\x27/g' quote.tmp
''''''

如果要使用sed将
替换为

sed 's/"/\x27/g' yourFile


\x27 - single
\x22 - double
它可以使代码看起来更干净,并且减少逃逸

请参阅测试:

kent$  cat quote.tmp 
""""""

kent$  sed 's/"/\x27/g' quote.tmp
''''''

你有一个错误。只需将双引号替换为单引号,这就足够了

set list_string to "This program said: \"Hello World!\""
set new_string to do shell script "/bin/echo -n " & quoted form of list_string & " | sed -e 's/\"/'\\''/g'"
解释's/\'/'\'''/g'


applescript环境中需要\\ and\,它将仅位于shell中的\\ and“。因此进入shell的是's/“/'\''/g'。那么所有的引语是什么?一个非常常见的错误是认为命令行中的引用与编程中的引用是一样的。单引号可以打开或关闭替换。因此,第一个单引号关闭替换,这意味着下一个字符将被解释为文本,没有特殊含义(包括转义字符)。因此,要转义单个报价,我们需要打开替换,然后可以转义单个报价并再次关闭替换。

fy您的报价有错误。只需将双引号替换为单引号,这就足够了

set list_string to "This program said: \"Hello World!\""
set new_string to do shell script "/bin/echo -n " & quoted form of list_string & " | sed -e 's/\"/'\\''/g'"
解释's/\'/'\'''/g'


applescript环境中需要\\ and\,它将仅位于shell中的\\ and“。因此进入shell的是's/“/'\''/g'。那么所有的引语是什么?一个非常常见的错误是认为命令行中的引用与编程中的引用是一样的。单引号可以打开或关闭替换。因此,第一个单引号关闭替换,这意味着下一个字符将被解释为文本,没有特殊含义(包括转义字符)。因此,要转义单引号,我们需要打开替换,然后可以转义单引号并再次关闭替换。

我试图编辑您的问题,因为第二行似乎不仅包含代码。但是我失败了:(你能把解释和代码分开吗?我试着编辑你的问题,因为第二行似乎不仅包含代码。但是我失败了:(你能把解释和代码分开吗?