正则表达式用于查找字母数字&连字符PATTERN在文本文件中

时间:2018-02-02 04:50:34

标签: regex bash shell grep

从下面的文字中我想获取PATTY ALPHABATES-由HYPHEN-NUMBERS 分隔,例如在此文件“MGRAPP-713”中(它将针对每个文件进行更改,但PATTERN将保持不变)< / p>

123.txt
REPORTS:
restrict CBD [Jawad Hameed] [2018-01-31 16:31:00 -0500]`enter code here`
debug [Jawad Hameed] [2018-01-31 16:09:08 -0500]
debug [Jawad Hameed] [2018-01-31 15:59:52 -0500]
Merge pull request #65 from HotelKey/MGRAPP-713 [GitHub] [2018-01-31 11:35:30                                                                                           0100]
MGRAPP-713 [sabrio] [2018-01-30 15:30:56 +0100]

我正在使用: grep'[A-Z0-9-]'123.txt

2 个答案:

答案 0 :(得分:1)

你的问题不是很清楚。你总是在寻找那个特定的字符串吗?你想要整条生产线,还是那个领域?你正在寻找的字符串总是在行的开头吗?

基于我对你的意思的猜测,我建议:

$ awk '/^[A-Z]+-[0-9]/ {print $1}' mgrapp 
MGRAPP-713

每当您想要打印与模式匹配的部分行时, awk 就是您的朋友。

修改

在评论中,您会稍微澄清一下您的目标。这是一个稍微复杂的解决方案:

$ awk '/^[A-Z]+-[0-9]/ {
     match($1, /^[A-Z]+-[0-9]+/) 
     printf "%.*s\n", RLENGTH, $1 }' mgrapp
MGRAPP-713

但我无法为你编写程序。我只是在演示 awk 让你编写简单的程序来从文本文件中获取字符串。像任何强大的工具一样,学习需要时间。这是值得花时间的,因为,你知道,“运气有利于准备好的思想。”

答案 1 :(得分:0)

使用此:

[A-Z]+-[0-9]+
  

[A-Z]+ - 用于匹配所有大写字词,

     

- - 对于连字符,

     

[0-9]+ - 代表数字