Можем ли мы использовать регулярное выражение с командами cleartool?

Я использую команду ниже для получения базовых показателей.

cleartool lsbl -fmt "%n\n" -comp comp_name@\vob_name -stream stream_name@\vob_name

Я ищу способ отображения базовых линий, которые численно равны/меньше определенной заданной базовой линии. Есть ли способ достичь этого?

Случай 1: если вывод

abc_6.2168
abc_7.4587
abc_8.2950
abc_9.3032

Если я хочу отобразить базовую линию, которая численно равна/меньше (и ближе всего) к abc_8. Следовательно, ожидаемый результат в случае 1 должен быть: abc_8.2950.

Случай 2: если вывод

abc_6.2168
abc_7.4587
abc_9.3032

Ожидаемый результат должен быть: abc_7.4587

ПРИМЕЧАНИЕ. Попробуйте это на Groovy (конвейер Jenkins).


person Shivani    schedule 11.12.2019    source источник


Ответы (1)


Есть ли способ достичь этого?

Только не с ClearCase/cleartool, что означает, что вам нужно проанализировать его вывод, и это зависит от вашей ОС/оболочки.

Что-то вроде оболочки Windows CMD с оболочкой Git для Windows на пути:

cleartool lsbl ... | sort -V |awk 'BEGIN{a=$0;FS="._"}$2 ^< 9{print $0;}'|tail -1

(^< необходим, чтобы избежать < и не дать CMD интерпретировать это как перенаправление)

person VonC    schedule 11.12.2019
comment
Я отредактировал свой вопрос. Пожалуйста, смотрите примечание. Я попробовал команду выше, но, похоже, в ней не работает трубка. Это дает ошибку. - person Shivani; 12.12.2019
comment
@Shivani Попробуйте сначала в обычном CMD, чтобы увидеть, работает ли это. Конвейер Jenkins может выполнять команду bat. - person VonC; 12.12.2019
comment
Он не работает в обычном CMD. Ошибка: cleartool: Ошибка: Дополнительные аргументы: | . - person Shivani; 13.12.2019
comment
@Shivani Попробуйте только | sort -V для тестирования. Будет ли это работать тогда? - person VonC; 13.12.2019
comment
Ага! Довольно странно.. :( - person Shivani; 13.12.2019
comment
@Shivani, какую полную команду вы вводите в обычном CMD? - person VonC; 13.12.2019
comment
cleartool lsbl -fmt %n\n -comp comp_name@\vob_name -stream stream_name@\vob_name | сортировать -V - person Shivani; 13.12.2019
comment
@Shivani Можешь попробовать добавить второй '%' перед %n?: cleartool lsbl -fmt "%%n\n" -comp comp_name@\vob_name -stream stream_name@\vob_name | sort -V - person VonC; 13.12.2019
comment
Ошибка -VСистема не может найти указанный файл. Я пробовал с %% и %, в обоих направлениях. Та же ошибка. - person Shivani; 13.12.2019
comment
Я перенаправил вывод в файл .txt. Как можно выполнить указанную выше обработку в пакетном режиме? - person Shivani; 23.12.2019
comment
@Shivani Оказавшись в файле, вы можете просто указать его (man7.org /linux/man-pages/man1/cat.1.html) и примените любой нужный фильтр: cat myFile|sort -V - person VonC; 23.12.2019
comment
Нет, я имел в виду порядковый номер. - person Shivani; 23.12.2019
comment
@Shivani Да, это то, что я имел в виду: sort -V выполняет сортировку по числовому порядку. - person VonC; 23.12.2019
comment
Я имел в виду фактическую постановку задачи. Я ищу способ отображения базовых линий, которые численно равны/меньше определенной заданной базовой линии. Есть ли способ достичь этого? - person Shivani; 24.12.2019
comment
@Shivani Это будет команда, которую я упомянул в ответе. - person VonC; 24.12.2019
comment
@Shivani Мой ответ сработал? Он отображает базовые уровни, которые численно равны или меньше заданного базового уровня. - person VonC; 15.04.2020
comment
Нет, по какой-то причине команда не работала должным образом в cmd, как я упоминал в предыдущих комментариях, я создал perl-скрипт для достижения цели. - person Shivani; 15.04.2020
comment
@Shivani Хорошо: вы можете добавить этот perl-скрипт ниже в качестве своего ответа, и вы можете принять свой собственный ответ: это поможет другим с тем же вопросом. - person VonC; 15.04.2020
comment
Не знаю, насколько это актуально для других, я разместил сценарий - person Shivani; 15.04.2020