bash:通过grep匹配单引号和双引号

Posted

技术标签:

【中文标题】bash:通过grep匹配单引号和双引号【英文标题】:bash: matching single and double quotes together by grep 【发布时间】:2021-02-13 09:53:34 【问题描述】:

目标是匹配文本中的单引号或双引号单词。

'foo'
"bar"
'buz"
# text

在经典 Shell 脚本(脚本 1)一书中的 bash 脚本中,需要转义引号。该怎么做?

#! /bin/sh - 
grep \(["']\).*\1 text
# script 1

另一种解决方案(脚本 2)是。

#! /bin/sh -
grep -e "'.*'" -e '".*"' text
# script 2

@William Pursell 的确切解决方案(脚本 3)更紧凑。

#! /bin/sh - 
grep '\(["'"']\).*\1" text
# script 3

【问题讨论】:

【参考方案1】:

我可能误解了这个问题,但您似乎在问如何正确地转义引号。做吧:

grep '\(["'"']\).*\1.*\1"

【讨论】:

以上是关于bash:通过grep匹配单引号和双引号的主要内容,如果未能解决你的问题,请参考以下文章

Bash中单引号和双引号的区别

带有单引号和双引号的 bash 别名命令

linux bash shell 中的单引号和双引号

linux bash shell中,单引号 双引号,反引号(``)的区别及各种括号的区别

如何在 Bash/Grep 中转义单引号?

sed 批量修改文件中遇到的单引号和双引号的坑