Как получить строки, содержащие одно из требуемых значений в определенном столбце?

Это полностью зависит от того, как вы инициируете задания из Bitbucket. Например, я использую плагин уведомления pull -request -для Bitbucket , чтобы инициировать свои задания, и одним из параметров, которые он предлагает, является ветка, из которой был создан запрос на вытягивание. Затем вы можете передать эту информацию в Jenkins, как хотите; одним из примеров может быть передача его в качестве параметра параметризованному заданию. Разные хуки или триггеры будут иметь разные доступные опции; некоторые могут даже не предлагать возможность передачи имени ветки.

Тем не менее, я настоятельно рекомендую вместо этого использовать плагин Bitbucket Branch Source для Jenkins . Он автоматически создает задания Jenkins для каждой ветки и запроса на вытягивание каждого проекта в проекте Bitbucket. Это значительно упрощает работу в Jenkins с репозиториями, имеющими несколько ветвей.

0
10.09.2020, 23:00
3 ответа

Используйте это:

grep -wf file2 file1

fсоответствует содержимому файла 2, а wгарантирует, что только целые слова, соответствующие содержимому файла 2, сопоставляются с содержимым файла 1, так что такие строки, как aaи ab, и appleне совпадают.

Проверено с помощью GNU grep.

1
18.03.2021, 23:05

Дано

$ 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' с призывом.

2
18.03.2021, 23:05

Для 3 полей в file1.txtи совпадения одного символа изfile2.txt:

chars="$( tr -d "\n" <file2.txt)"
regexp="\t[$chars]\t"
eval grep -E "$regexp" file1.txt

Не проверено

0
18.03.2021, 23:05

Теги

Похожие вопросы