-1
我想用双引号将单引号替换为使用sed的字符串。如何在Bash中用bash中的两个单引号替换单引号
我已经试过这样回音它是一个可爱的一天| SED“S /'/ \ “/ g的”,但该字符串没有发现比赛和没有给出结果。
我使用bash在Ubuntu的Windows
我在做什么错?
我想用双引号将单引号替换为使用sed的字符串。如何在Bash中用bash中的两个单引号替换单引号
我已经试过这样回音它是一个可爱的一天| SED“S /'/ \ “/ g的”,但该字符串没有发现比赛和没有给出结果。
我使用bash在Ubuntu的Windows
我在做什么错?
的扩展可以得到你想要的东西很简单:
original="it's a lovely day"
modified=${original//\'/\"}
echo "$modified"
除了它的简单性,这种扩张不使用外部命令(只有外壳的功能),因此性能开销比启动一个单独的进程要低得多
打破语法了一点:
${original...}
意味着我们正在扩大original
变量//
意思是“搜索所有的”\'
是一个转义的单引号(文本搜索)/
意味着\"
“以取代”是一个转义双引号(文字被替换)另一种有趣的方式来做到这一点:
repl()
{
local IFS="$2$1"
set -- $3
echo "$*"
}
repl \' \" "it's a lovely day"
repl "'" '"' "it's a lovely day" # Quoted rather than escaped
可以制成符合POSIX标准的一个子shell的成本:
repl()
(
IFS="$2$1"
set -- $3
echo "$*"
)
为什么要用'sed',考虑'tr'代替...(例如。 ''tr''') –
我意识到自己的错误,我并没有用“”标记中的回声来包围文本 –
问题的标题是:'...用两个单引号(例如'''')问题的主体说:'用双引号'例如(''')... - imho,那是不同的。 – jm666