bash:通过grep将单引号和双引号匹配在一起

问题描述

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

'foo'
"bar"
'buz"
# text

在名为 Classic Shell Scripting(脚本 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

解决方法

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...