查找和替换: \'

时间:2016-11-30 21:53:47

标签: unix sed

我正在尝试将\'的每个引用替换为文件中的'

我使用了sed -e s/\'/"\'"/g file.txt

的变体形式

但他们总是取代每一个。(单曲).quote

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:1)

不确定它是最好的解决方案,我可以这样做:

sed "s/[\]'/\"\'\"/g" file.txt

(将反斜杠字符放在字符范围内,这样它就不会干扰以下引号,并用双引号保护)

或者只是扩展你的语法,没有引号但使用几乎相同的技巧:

sed -e s/[\\]\'/"\'"/g file.txt

答案 1 :(得分:1)

一种尝试保存"单引号的方法"尽可能使用sed命令:

sed 's/\\'"'"'/\'/g'

只需使用\转义\\并使用'"'"'在命令中输入单引号:第一个单引号到目前为止结束命令,然后我们有一个双引号单引号("'"),最后是命令其余部分的单引号。

或者,双引号整个命令并转义反斜杠和单引号:

sed "s/\\\'/\'/g"

答案 2 :(得分:1)

正确的语法是:

$ echo "foo'bar" | sed 's/'\''/\'/'
foo'bar

每个脚本(sed,awk,等等)都应该总是用单引号括起来,你只需要我们其他单引号来停止/重启脚本分隔符,就绝对是shell的最小部分绝对是绝对的必要的,在这种情况下足够长,可以使用\'。您需要突破到shell以指定',因为根据shell规则,'中包含的脚本不能包含',即使您尝试将其转义也不会。

答案 3 :(得分:0)

echo "foo'bar" | gawk '{gsub(/\47/,"\\'")}1'

foo'bar

这里棘手的部分是用符号替换单引号。 首先,为了使单引号可管理使用其八进制 代码在这里\ 47然后通过两个反斜杠转义&符号。突然之间 变得可行:)