日志文件中特定于grep的模式

日志文件中特定于grep的模式,grep,Grep,我正在将我所有的svn提交日志消息传递到一个文件中,并且只希望从中获得JIRA发行号。 有些行可能有不止一个发行号,但我只想获取第一个发行号 模式为XXXX-999(字母和数字字符的数量不是常数) 另外,我不希望显示整行,只显示JIRA编号,没有重复项。我使用了下面的命令,但它不起作用 有人能帮忙吗 cat /tmp/jira.txt | grep '^[A-Z]+[-]+[0-9]' 日志文件示例 ---------------------------------------------

我正在将我所有的svn提交日志消息传递到一个文件中,并且只希望从中获得JIRA发行号。 有些行可能有不止一个发行号,但我只想获取第一个发行号

模式为XXXX-999(字母和数字字符的数量不是常数) 另外,我不希望显示整行,只显示JIRA编号,没有重复项。我使用了下面的命令,但它不起作用

有人能帮忙吗

 cat /tmp/jira.txt | grep '^[A-Z]+[-]+[0-9]'
日志文件示例

 ------------------------------------------------------------------------
 r62086 | userx | 2015-05-12 11:12:52 -0600 (Tue, 12 May 2015) | 1 line
 Changed paths:
   M /projects/trunk/gradle.properties
 ABC-1000  This is a sample commit message    
 ------------------------------------------------------------------------
 r62084 | usery | 2015-05-12 11:12:12 -0600 (Tue, 12 May 2015) | 1 line
 Changed paths:
   M /projects/training/package.jar
 EFG-1001  Test commit
预期产出:

ABC-1000
EFG-1001

首先,第二个
+
似乎放错了位置,它应该在
[0-9]
表达式的末尾

其次,我认为您需要做的就是使用
-o
选项grep(仅显示行的匹配部分),然后通过
sort-u
管道
grep
输出,如下所示:

cat/tmp/jira.txt|grep-oE'^[A-Z]+-[0-9]+'| sort-u

虽然如果是我,我会跳过
cat
步骤,只把文件名给
grep
,如下所示:

grep-oE'^[A-Z]+-[0-9]+'/tmp/jira.txt | sort-u


六个一个,半打另一个,真的。

首先,第二个
+
似乎放错地方了,应该在
[0-9]
表达式的末尾

其次,我认为您需要做的就是使用
-o
选项grep(仅显示行的匹配部分),然后通过
sort-u
管道
grep
输出,如下所示:

cat/tmp/jira.txt|grep-oE'^[A-Z]+-[0-9]+'| sort-u

虽然如果是我,我会跳过
cat
步骤,只把文件名给
grep
,如下所示:

grep-oE'^[A-Z]+-[0-9]+'/tmp/jira.txt | sort-u


六个一个,半打另一个,真的。

你能举一两个你想匹配的行的例子吗?我已经编辑了查询。这样看起来比评论好。谢谢。你能举一两个你想匹配的行的例子吗?我已经编辑了查询。这样看起来比评论好。谢谢,谢谢你的回复。但是,此命令不返回任何内容。我两个都试过。@VRK我忘了在许多版本的
grep
上,
+
需要
-E
选项才能获得它的特殊含义。回答已编辑,请尝试新命令。太棒了。两个命令都很有效。谢谢你的命令和解释。谢谢你的回复。但是,此命令不返回任何内容。我两个都试过。@VRK我忘了在许多版本的
grep
上,
+
需要
-E
选项才能获得它的特殊含义。回答已编辑,请尝试新命令。太棒了。两个命令都很有效。谢谢你的命令和解释。