关于bash:如何匹配sed中的单引号

关于bash:如何匹配sed中的单引号

How to match a single quote in sed

如果表达式用单引号引起来,则如何匹配sed中的单引号:

1
sed -e '...'

例如需要匹配此文本:

1
'foo'


您可以使用:

1
"texta'textb" (APOSTROPHE inside QUOTATION MARKs)

要么

1
'texta'\''textb' (APOSTROPHE text APOSTROPHE, then REVERSE SOLIDUS, APOSTROPHE, then APOSTROPHE more text APOSTROPHE)

我使用了unicode字符名称。 RESOLE SOLIDUS通常被称为反斜杠。

在后一种情况下,您可以关闭撇号,然后用反斜杠对您的撇号进行shell引用,然后为其余的文本打开另一个撇号。


正如对该问题的评论所指出的那样,它实际上与sed无关,而是如何在外壳程序(例如bash)中用引号引起来的字符串中包含引号。

为了弄清楚先前的答案,您需要在反引号前加上反斜杠,但是不能在单引号中使用引号。从bash手册页:

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.

因此,您需要终止带引号的表达式,插入转义的引号,然后启动新的带引号的表达式。 Shell的引号删除不会添加任何额外的空格,因此实际上您会得到字符串连接。

因此,要回答有关如何对表达式" foo"单引号的原始问题,您可以执行以下操作:

1
sed -e '...'\''foo'\''...'

(其中" ..."是sed表达式的其余部分)。

总体而言,出于可读性考虑,如果可能的话,最好将周围的引号更改为双引号:

1
sed -e"...'foo'..."

[作为第一种(单引号)方法潜在的维护噩梦的示例,请注意StackOverflow的语法高亮显示了引号,反斜杠和其他文本的颜色-绝对不正确。]


推荐阅读

    linux常用命令文本?

    linux常用命令文本?,工作,命令,网络,地址,系统,管理,标准,信息,目录,文件,Lin

    linux的命令关于匹配?

    linux的命令关于匹配?,系统,工具,工作,地址,信息,命令,灵活,基础,字符串,文

    linux脚本命令单引号?

    linux脚本命令单引号?,系统,工作,美元,地址,命令,信息,情况,标准,管理,引号,l

    linux匹配文件名命令?

    linux匹配文件名命令?,系统,时间,发行,位置,工具,软件,名称,盘后,电脑,盘中,l

    linux命令匹配数字?

    linux命令匹配数字?,数字,档案,位置,环境,名字,较大,系统,权限,命令,用户,Lin

    linux文本查询命令?

    linux文本查询命令?,标准,命令,文件,工具,数据,信息,位置,系统,内容,文本,Lin

    linux在线命令文本?

    linux在线命令文本?,系统,工作,信息,在线,地址,命令,基础,标准,工具,目录,Lin

    linux路由匹配命令?

    linux路由匹配命令?,信息,地址,系统,电脑,设备,服务,网络,时间,数字,情况,Lin

    linux编写文本命令?

    linux编写文本命令?,工作,系统,命令,第一,信息,发行,代码,名字,文件,终端,lin

    linux压缩文本的命令?

    linux压缩文本的命令?,系统,图片,命令,设备,工具,位置,软件,管理,文件,目录,

    linux压缩文本的命令?

    linux压缩文本的命令?,系统,图片,命令,设备,工具,位置,软件,管理,文件,目录,

    linux输入文本命令?

    linux输入文本命令?,系统,位置,电脑,工作,首开,命令,终端,模式,指令,字符,如

    linux命令行空格匹配?

    linux命令行空格匹配?,系统,电脑,地址,空格,短线,名称,服务,网络,工具,引号,

    linux替换文本命令?

    linux替换文本命令?,信息,系统,命令,内容,文件,文本,字符串,字符集,单词,字

    linux替换文本的命令?

    linux替换文本的命令?,系统,地址,工作,信息,命令,标准,数据,内容,文件,字符

    linux编辑文本命令行?

    linux编辑文本命令行?,工作,系统,信息,状态,地址,命令,管理,标准,目录,文件,L

    linux查看文本的命令?

    linux查看文本的命令?,系统,工作,标准,信息,命令,管理,数据,文件,目录,时间,L

    linux文本中插入命令?

    linux文本中插入命令?,工作,地址,系统,命令,信息,第一,工具,地方,密码,情况,L

    linux文本撤销命令?

    linux文本撤销命令?,系统,命令,信息,环境,状态,进程,程序,终端,快捷键,用户,

    linux命令匹配符应用?

    linux命令匹配符应用?,工具,系统,信息,命令,文件,数据,工作,标准,字符串,选