regex - Linux 中的 grep 命令使用“在正则表达式中

标签 regex linux grep quotes

我有以下 linux 命令:

grep -o file.txt "\"uri\":\".{1,}\""

我的文本如下:

"some characters here","uri":"some_URI*Here.^%$#!", "again a set of irrelevant characters"

当然我想要的输出是:

"uri":"some_URI*Here.^%$#!"

为什么我没有正确的输出?因为在我的文本中混合了 "的 grep 要求的 "?如何解决?

最佳答案

您可以使用以下正则表达式:

grep -oE '"uri":".[^"]+"' inputFile

原发布者提供了一个几乎正确但有一些缺陷的正则表达式,以下是他/她的版本和更正后的版本:

grep -o  inputFile "\"uri\":".{1,}\""   # wrong
grep -oE '"uri":"[^"]{1,}"' inputFile   # correct

第一次使用grep遇到的问题是:

  • inputFile 应该在正则表达式之后,而不是之前
  • 需要 -E 标志才能使 {1,} 工作
  • 最好在外面使用单引号,这样双引号就不需要转义了
  • 需要使用[^"]字符类而不是

关于regex - Linux 中的 grep 命令使用“在正则表达式中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49412808/

相关文章:

c# - 修改正则表达式组优先级

c++ - 了解如何手动发出处理器指令

linux - 嵌入式 Linux 中的多个 ALSA 声音流?

linux - grep 无法匹配另一个文件中的 1 个文件的内容

linux - 根据字段和长度删除重复的行

python - 检查列表中的正则表达式结果,if-else python

python - 匹配字符串每个单词中的第一个元音并用正则表达式打印它们以逗号分隔?

python - 使用 re.sub() 时无效的组引用

c++ - 命令行 XRandR 和自己的代码之间的差异

unix - 删除文本行 block