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

Sri*_*ari 21 unix linux bash shell

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

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

  • 所有出现hari'shari s
  • 所有出现leader'sleader s

我试过了

sed -e 's/"'"/ /g' myfile.txt
Run Code Online (Sandbox Code Playgroud)

sed -e 's/"'"/" "/g' myfile.txt
Run Code Online (Sandbox Code Playgroud)

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

Ant*_*rus 44

尝试尽可能简单地保持sed命令,否则你会在以后阅读之后对你所写的内容感到困惑.

#!/bin/bash
sed "s/'/ /g" myfile.txt
Run Code Online (Sandbox Code Playgroud)


n3r*_*rV3 21

这将做你想要的

echo "hari's"| sed 's/\x27/ /g'
Run Code Online (Sandbox Code Playgroud)

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

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

HTH


per*_*eal 11

只需离开单引号并输入一个转义单引号:

sed 's/'\''/ /g' input
Run Code Online (Sandbox Code Playgroud)

也可以使用变量:

quote=\'
sed "s/$quote/ /g" input
Run Code Online (Sandbox Code Playgroud)