grep regex用于文件名,带有一个分隔符但不是两个

时间:2017-12-04 15:24:45

标签: bash grep

所以这是我的问题,我有一个脚本,我生成这样的文件(只是一个例子):

animal

animal.dog

animal.dog.7

基本上这是文件中的树结构,每个结构都包含不同的信息。

我正试图抓住animal.dog,但我的正则表达式.*\..*$想抓住这两个

animal.dog.7animal.dog

我只想要animal.dog

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

您可以在grep -E正则表达式模式中使用此否定字符类:

^[^.]+\.[^.]+$

这将与animal.dog匹配,但与animal.dog.7

不匹配

RegEx分手:

  • ^:开始
  • [^.]+:匹配1个不是DOT的字符
  • \.:匹配文字DOT
  • [^.]+:匹配1个不是DOT的字符
  • $:结束