用破折号分隔的单词的grep



我有一堆像这样的字符串,我想从一个包含许多其他字符串的文件中提取:

chr2:95183661-95183776
chr9:951d2483661-95182423776

我正在寻找一种方法来grep这个特定的模式,但中间的破折号会导致问题。以下是我尝试过的:

grep  -w --color -o -E  "chr[0-9]:[0-9]-[0-9]*" 

我创建了一个测试文件,以便检查正则表达式:

Prompt> cat test.txt
chr2:95183661-95183776
chr9:951d2483661-95182423776blabla
blabla

我想出了以下正则表达式:

"chr[0-9]*:[0-9a-z]*-[0-9]*"

具有以下含义:

  • [0-9]*:任意位数
  • ::冒号,前面有一个反斜杠,以便将其视为真实字符,而不是通配符
  • [0-9a-z]*:任意数量的小写字母或数字
  • -:一个连字符,前面有一个反斜杠,以便将其视为真实字符,而不是通配符(如[0-9](

测试:

Prompt> grep -o "chr[0-9]*:[0-9a-z]*-[0-9]*" test.txt
chr2:95183661-95183776
chr9:951d2483661-95182423776

最新更新