gpt4 book ai didi

linux - 为什么我无法在 sed 替换中转义单引号但使用\x27 有效?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:22:14 25 4
gpt4 key购买 nike

我正在尝试用 4 个单引号替换某些内容,但出于某种我不知道的原因转义不起作用!

这是我不工作的命令:

sed -r 's/\*\*(.*)\*\*/\'\'\1\'\'/' file

我不知道为什么它会输出错误,即使我转义了引号。

我知道我可以使用双引号解决问题,例如:

sed -r "s/\*\*(.*)\*\*/\'\'\1\'\'/"

或:

sed -r 's/\*\*(.*)\*\*/\x27\x27\1\x27\x27/'

但是是的,我只想知道第一种形式不起作用的原因。谢谢

最佳答案

首先,我认为使用 \x27 是正确且最易读的方法。

关于你的问题,问题与bash的单引号字符串有关。您不能在单引号字符串中转义单引号。来自bash manual :

3.1.2.2 Single Quotes

Enclosing characters in single quotes (‘'’) preserves the literal value of each character within the quotes. A single quote may not occur between single quotes, even when preceded by a backslash.

意思是这有效:

echo 'ab\'c'

您需要结束引号字符串,添加转义引号并再次开始单引号字符串:

echo 'ab'\''c'

关于linux - 为什么我无法在 sed 替换中转义单引号但使用\x27 有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46047806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com