Это полностью зависит от того, как вы инициируете задания из Bitbucket. Например, я использую плагин уведомления pull -request -для Bitbucket , чтобы инициировать свои задания, и одним из параметров, которые он предлагает, является ветка, из которой был создан запрос на вытягивание. Затем вы можете передать эту информацию в Jenkins, как хотите; одним из примеров может быть передача его в качестве параметра параметризованному заданию. Разные хуки или триггеры будут иметь разные доступные опции; некоторые могут даже не предлагать возможность передачи имени ветки.
Тем не менее, я настоятельно рекомендую вместо этого использовать плагин Bitbucket Branch Source для Jenkins . Он автоматически создает задания Jenkins для каждой ветки и запроса на вытягивание каждого проекта в проекте Bitbucket. Это значительно упрощает работу в Jenkins с репозиториями, имеющими несколько ветвей.
Используйте это:
grep -wf file2 file1
f
соответствует содержимому файла 2, а w
гарантирует, что только целые слова, соответствующие содержимому файла 2, сопоставляются с содержимым файла 1, так что такие строки, как aa
и ab
, и apple
не совпадают.
Проверено с помощью GNU grep.
Дано
$ cat file1
12 a 4
11 f 5
8 b 6
10 x 7
и
$ cat file2
a
b
x
вы можете использовать краткий скрипт AWK:
$ awk 'FNR == NR {strings[$0]} NR > FNR && ($2 in strings)'./file2./file1
12 a 4
8 b 6
10 x 7
Первый шаблон(FNR == NR
)верен только дляfile2
(первого аргумента файла в командной строке ); соответствующее действие заполняет ассоциативный массив, индексами которого являются строки для сопоставления.
Второй шаблон(NR > FNR && ($2 in strings)
)верен только для строк, исходящих изfile1
(и из любого другого файла, который может следовать в командной строке ), , если второй столбец является индексом strings
массив. Соответствующее действие опущено, по умолчанию используется print
.
Чтобы разрешить поиск строк, содержащих пробелы, предполагая, что столбцы в file1
разделены одним <tab>
, вы можете добавить параметр-v FS='\t'
(или-F '\t'
)к вашему awk
' с призывом.
Для 3 полей в file1.txt
и совпадения одного символа изfile2.txt
:
chars="$( tr -d "\n" <file2.txt)"
regexp="\t[$chars]\t"
eval grep -E "$regexp" file1.txt
Не проверено