首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >转义单引号

转义单引号
EN

Stack Overflow用户
提问于 2012-02-02 20:15:37
回答 3查看 6.6K关注 0票数 1

我希望将以下示例中sed命令中的双引号替换为单引号。

代码语言:javascript
复制
set new_string to do shell script "echo " & quoted form of list_string & " | sed -e 's/$/\"/' -e 's/^/\"/' -e 's/^/+/'"

但是,如果我将双引号替换为单引号,我会得到一个错误,有没有办法转义单引号?

我不是sed忍者,所以任何关于如何做的提示都是非常感谢的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-02 20:32:00

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

代码语言:javascript
复制
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环境中是必需的,并且将位于shell中。那么进入shell的是‘s/“/’\‘/g’。那么所有的引号是什么?一个非常常见的错误是认为命令行上的引号和编程中的引号一样。单引号打开或关闭替换。所以第一个单引号关闭替换,这意味着下一个字符将被解释为文本,没有特殊含义(包括转义字符)。因此,要转义单引号,我们需要打开替换,然后我们可以转义单引号,然后再次关闭替换。

票数 2
EN

Stack Overflow用户

发布于 2012-02-02 20:26:59

如果您想使用sed将"替换为'

代码语言:javascript
复制
sed 's/"/\x27/g' yourFile


\x27 - single
\x22 - double

它可以使代码看起来更干净,转义更少。

请参阅测试:

代码语言:javascript
复制
kent$  cat quote.tmp 
""""""

kent$  sed 's/"/\x27/g' quote.tmp
''''''
票数 8
EN

Stack Overflow用户

发布于 2012-02-02 20:25:48

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

在shell脚本中,您可能会这样说

代码语言:javascript
复制
| sed -e 's/$/'\''/' -e 's/^/'\''/' -e 's/^/+/'

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9112157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档