Linux 如何在sed中用另一个字符替换单引号?

Linux 如何在sed中用另一个字符替换单引号?,linux,bash,shell,unix,Linux,Bash,Shell,Unix,我有一个平面文件,其中包含多个包含单引号的字符串,例如hari的和leader的 我想用空格替换所有出现的单引号,即 所有发生的hari's到hari's 所有出现的leader's到leader's 我试过了 sed -e 's/"'"/ /g' myfile.txt 及 但是他们没有给我预期的结果。只需留下一个引号,然后放一个转义的引号: sed 's/'\''/ /g' input 也可以使用变量: quote=\' sed "s/$quote/ /g" input 尽量使sed

我有一个平面文件,其中包含多个包含单引号的字符串,例如
hari的
leader的

我想用空格替换所有出现的单引号,即

  • 所有发生的
    hari's
    hari's
  • 所有出现的
    leader's
    leader's
我试过了

sed -e 's/"'"/ /g' myfile.txt


但是他们没有给我预期的结果。

只需留下一个引号,然后放一个转义的引号:

sed 's/'\''/ /g' input
也可以使用变量:

quote=\'
sed "s/$quote/ /g" input

尽量使sed命令简单。 否则,你会对你写的东西感到困惑

#!/bin/bash
sed "s/'/ /g" myfile.txt

这会做你想做的

echo "hari's"| sed 's/\x27/ /g'
它将替换文件/文本中任何位置的单引号。即使它们用于引用,也将被空格替换。在这种情况下(删除不在单词边界的单词内的引号),可以使用以下方法:

echo "hari's"| sed -re 's/(\<.+)\x27(.+\>)/\1 \2/g'
echo“hari's”| sed-re's/(\)/\1\2/g'

HTH

这里是基于我自己的经验

请注意我如何在
sed之后使用特殊字符
vs

这不行(没有输出)

但这样就行了

2520 #> echo 1'2'3'4'5 | sed "s/'/ /g"
12345

-i应该在文件中替换它 sed-i's/“/”/g'filename.txt

如果您需要备份,您可以这样做 sed-i.bak的/“/”/g'filename.txt

我必须用“32'h”替换“0x”字符串,并用以下内容解决:

sed 's/ 0x/ 32\x27h/'

我想一点解释就好了。另外:这真的是Solaris的问题还是其他问题?(还有什么?)
2520 #> echo 1'2'3'4'5 | sed "s/'/ /g"
12345
sed 's/ 0x/ 32\x27h/'