35

我有一个平面文件,其中多次出现包含单引号的字符串,例如hari'sleader's.

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

  • 的所有hari's出现hari s
  • 的所有leader's出现leader s

我试过了

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

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

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

4

6 回答 6

62

尽量保持 sed 命令简单。否则你会在稍后阅读它时对你所写的内容感到困惑。

#!/bin/bash
sed "s/'/ /g" myfile.txt
于 2013-06-28T05:55:38.743 回答
29

这将做你想做的事

echo "hari's"| sed 's/\x27/ /g'

它将替换文件/文本中任何位置的单引号。即使它们用于引用,它们也将被替换为空格。在这种情况下(删除不在单词边界的单词中的引号),您可以使用以下内容:

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

高温高压

于 2013-06-28T06:03:00.423 回答
13

只需离开单引号并输入转义单引号即可:

sed 's/'\''/ /g' input

也可以使用变量:

quote=\'
sed "s/$quote/ /g" input
于 2013-06-28T05:46:04.553 回答
1

这里是根据我自己的经验。

请注意我如何使用特殊字符'"之后sed

这不行(无输出)

2521 #> echo 1'2'3'4'5 | sed 's/'/ /g'
>
>
>

但这会做

2520 #> echo 1'2'3'4'5 | sed "s/'/ /g"
12345
于 2017-08-21T21:28:59.960 回答
0

我不得不用“32'h”替换“0x”字符串并解决:

sed 's/ 0x/ 32\x27h/'
于 2019-10-11T09:00:59.750 回答
0

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

如果你想要备份你可以做 sed -i.bak 's/“/"/g' filename.txt

于 2017-10-02T06:03:30.577 回答