我正在尝试将\'
的每个引用替换为文件中的'
我使用了sed -e s/\'/"\'"/g file.txt
但他们总是取代每一个。(单曲).quote
非常感谢任何帮助。
答案 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然后通过两个反斜杠转义&符号。突然之间 变得可行:)