Мне нужно проанализировать выходные данные команды и найти подстроку после обратной косой черты (т. Е. app-v2.zip
) для файла с самой высокой версией В приведенном ниже выводе команды я хочу найти app-v2.zip
, потому что v2
самый высокий. Я знаю, что для этого нужна комбинация команд bash, но я этого не понял.
Вывод команды:
gs://artifacts/app-v1.zip
gs://artifacts/app-v2.zip
Желаемое значение переменной:
app-v2.zip
2 ответа
Например, вы можете использовать basename
для получения имени файла, sort -V
для сортировки номеров версий и tail
для получения самой новой версии.
your-command \
| sort -V \
| tail -n1 \
| xargs basename
Если ваш вывод уже отсортирован, как в вашем примере, это тривиально:
variable=$(yourCommand |awk -F/ 'END{print $NF}')
awk -F/
: используйте/
в качестве разделителя полейEND{print $NF}
: печать последнего поля последней записи (строки)
Новые вопросы
bash
Для вопросов о скриптах, написанных для командной оболочки Bash. Для сценариев оболочки с ошибками / синтаксическими ошибками, пожалуйста, проверьте их с помощью программы shellcheck (или на сервере веб-проверки оболочки по адресу https://shellcheck.net) перед размещением здесь. Вопросы об интерактивном использовании Bash, скорее всего, будут касаться темы Super User, а не переполнения стека.