作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想在我的 shell 脚本中用双撇号替换字符串中的所有撇号(直单引号)。我使用了以下 gsub 命令:
gsub(/'/, "''", string);
但是我得到了一个错误,因为我需要插入第二个单引号来匹配第一个。如果我尝试替换字符串的另一部分,它就可以正常工作。
最佳答案
正确的做法是用它的八进制代码替换任何文字 '
(s) \047
:
$ echo "foo'bar" | awk '{gsub(/\047/,"&&")}1'
foo''bar
这是正确的方法,因为它可以在脚本文件中或脚本文件外工作,并且可以在正则表达式文字中工作(不像使用变量来保存引号字符,这会迫使您使用具有额外复杂性的动态正则表达式在某些情况下需要)。
此外 - 不要试图使用十六进制代码 \x27
而不是八进制 \047
因为十六进制并不总是按预期运行,请参阅 http://awk.freeshell.org/PrintASingleQuote 。
关于linux - gsub : replacing apostrophe with double apostrophe in a string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43785082/
我是一名优秀的程序员,十分优秀!