Определенный шаблон grep из файла журнала
Я передаю все свои сообщения журнала фиксации 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
1 ответ
Во-первых, кажется, у вас есть второй +
в неправильном месте, это должно быть в конце [0-9]
выражение.
Во-вторых, я думаю, что все, что вам нужно сделать, это использовать -o
опцию grep (для отображения только соответствующей части строки), затем передайте grep
вывод через sort -u
, как это:
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
Шесть из одного, полдюжины другого, правда.