当前位置:  开发笔记 > 编程语言 > 正文

如何匹配sed中的单引号

如何解决《如何匹配sed中的单引号》经验,为你挑选了2个好方法。

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

sed -e '...'

例如需要匹配此文本:

'foo'

tzot.. 46

你可以使用:

"texta'textb" (APOSTROPHE inside QUOTATION MARKs)

要么

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

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

在后一种情况下,你关闭你的撇号,然后用反斜杠引用你的撇号,然后为文本的其余部分打开另一个撇号.



1> tzot..:

你可以使用:

"texta'textb" (APOSTROPHE inside QUOTATION MARKs)

要么

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

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

在后一种情况下,你关闭你的撇号,然后用反斜杠引用你的撇号,然后为文本的其余部分打开另一个撇号.


第二种情况是我在寻找的.谢谢.

2> TimB..:

正如对问题的评论中所指出的,它并不是关于sed,而是如何在shell中的引用字符串中包含引号(例如bash).

为了澄清先前的答案,您需要使用反斜杠转义引号,但不能在单引号表达式中执行此操作.从bash手册页:

用单引号括起字符可以保留引号中每个字符的字面值.单引号之间可能不会出现单引号,即使前面有反斜杠也是如此.

因此,您需要终止引用的表达式,插入转义的引用,并启动新的引用表达式.shell的引用删除不会添加任何额外的空格,所以实际上你会得到字符串连接.

那么,为了回答如何单引用表达式'foo'的原始问题,你会做这样的事情:

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

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

总的来说,为了便于阅读,如果可能的话,你最好将周围的引号更改为双引号:

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

[作为第一个(单引号)方法的潜在维护噩梦的一个例子,请注意StackOverflow的语法如何突出显示引号,反斜杠和其他文本的颜色 - 这绝对不正确.

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有