使用“grep -e”和更高级的正则表达式

使用“grep -e”和更高级的正则表达式

我正在尝试使用以下正则表达式grep(搜索大小写混合巴布亚新几内亚文件)。

[A-Z]+[\w.]*\.[pPnNgG]{3}[\\"')]*.*$

当我输入命令时,我的 shell 显示>寻求更多输入。

我可以使用grep一些基本的正则表达式,但我从未完全掌握如何使用更高级的正则表达式。

值得一提的是,这是在 Windows 7 上的 Cygwin 中。

答案1

您没有转义"字符。之前的双反斜杠将被替换为单反斜杠,并且"不会转义。请删除一个反斜杠或添加一个。

尝试这个正则表达式:

grep -i '^[0-9a-z _]\+\.png\([^0-9a-z]+\|$\)' file | grep -v '^[0-9A-Za-z _]\+\.\(png\|PNG\)\([^0-9A-Za-z]\|$\)'

它将匹配从行首开始包含以下内容的所有行:

  • 至少一个字符0-9(范围为0,,1...,9字符), a-z ' '(空格),'_'
  • 一个点(需要用反斜杠转义,否则将表示“任何单个字符”)
  • ‘png’(或‘Png’等,因为-i已添加)
  • 并且后面没有任何0-9a-z字符(或A-Z因为-i添加了)。

-i- 将禁用区分大小写

相关内容