【问题标题】:Grep to escape special charactersGrep 转义特殊字符
【发布时间】:2024-01-13 14:56:01
【问题描述】:

您好,我是 shell 脚本的新手,我面临以下问题

1> 我如何用 grep 在一个大文件中的单词中查找带有 " 或 ' 或两者兼有的单词

我试过了

grep "'\|"" foo.txt 

这不起作用

2 > 获取一个包含文本的文件并打印存在该文本的另一个文件的整行 例子

文件 1 包含

abc
def
lmo 

文件 2 包含

amn,abc
abc,amd
fgh,def
abd,lmo

匹配文件 1 中的文本和文件 2 的第 2 列并打印文件 2 的整行

desired output
amn,abc
fgh,def
abd,lmo

【问题讨论】:

  • 第二个问题可以很容易地使用awk解决。已经有很多答案可以解决这个问题。试试看。如果您尝试某事并发现其中的困难,您将获得更好的回应。

标签: regex shell unix sed grep


【解决方案1】:

您可以使用字符类来匹配"' 作为

grep "['\"]"

示例

$ echo hello\" | grep "['\"]"
hello"

【讨论】:

  • 那不是字符类,它是一个包含字符列表的括号表达式。字符类是一组字符的独立于语言环境的命名标识符(例如,[:alnum:] 表示由您的语言环境定义的一组字母数字字符),通常在括号表达式中使用(例如 [[:alnum:]]),有时还结合使用在括号表达式(例如[[:alnum:][:space:]3-7&_#])中包含其他字符类和/或字符范围(例如3-7)和/或字符列表(例如&_#)。