我将所有svn提交日志消息传递给文件,并且只想从中获取JIRA问题编号。 有些行可能有超过1个问题编号,但我想只抓取第一个出现次数。
模式为XXXX-999(alpha和数字char的数量不是常数) 此外,我不希望显示整行,只是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 :(得分:0)
首先,看起来您的第二个+
位于错误的位置,它应该位于[0-9]
表达式的末尾。
其次,我认为你需要做的就是使用-o
选项grep(只显示行的匹配部分),然后通过{{1}管道grep
输出},像这样:
sort -u
虽然如果是我,我会跳过cat /tmp/jira.txt | grep -oE '^[A-Z]+-[0-9]+' | sort -u
步骤并将文件名设为cat
,如下所示:
grep
其中六个,另外六个,真的。