日志文件中特定于grep的模式
我正在将我所有的svn提交日志消息传递到一个文件中,并且只希望从中获得JIRA发行号。 有些行可能有不止一个发行号,但我只想获取第一个发行号 模式为XXXX-999(字母和数字字符的数量不是常数) 另外,我不希望显示整行,只显示JIRA编号,没有重复项。我使用了下面的命令,但它不起作用 有人能帮忙吗日志文件中特定于grep的模式,grep,Grep,我正在将我所有的svn提交日志消息传递到一个文件中,并且只希望从中获得JIRA发行号。 有些行可能有不止一个发行号,但我只想获取第一个发行号 模式为XXXX-999(字母和数字字符的数量不是常数) 另外,我不希望显示整行,只显示JIRA编号,没有重复项。我使用了下面的命令,但它不起作用 有人能帮忙吗 cat /tmp/jira.txt | grep '^[A-Z]+[-]+[0-9]' 日志文件示例 ---------------------------------------------
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
选项才能获得它的特殊含义。回答已编辑,请尝试新命令。太棒了。两个命令都很有效。谢谢你的命令和解释。