Мне нужно проанализировать выходные данные команды и найти подстроку после обратной косой черты (т. Е. app-v2.zip) для файла с самой высокой версией В приведенном ниже выводе команды я хочу найти app-v2.zip, потому что v2 самый высокий. Я знаю, что для этого нужна комбинация команд bash, но я этого не понял.

Вывод команды:

gs://artifacts/app-v1.zip
gs://artifacts/app-v2.zip

Желаемое значение переменной:

app-v2.zip
0
bwalsh434 27 Май 2019 в 23:33

2 ответа

Лучший ответ

Например, вы можете использовать basename для получения имени файла, sort -V для сортировки номеров версий и tail для получения самой новой версии.

your-command \
    | sort -V \
    | tail -n1 \
    | xargs basename
1
alfunx 27 Май 2019 в 21:15

Если ваш вывод уже отсортирован, как в вашем примере, это тривиально:

variable=$(yourCommand |awk -F/ 'END{print $NF}')
  • awk -F/: используйте / в качестве разделителя полей
  • END{print $NF}: печать последнего поля последней записи (строки)
0
vintnes 27 Май 2019 в 20:59