LINUX.ORG.RU

получение переменных $name-$ver_b$betaver и $arc из src.tar

 , , ,


0

1

Хочу добиться автоматизация для получения переменной из того, какой исходник загрузили,

допустим имеется: firefox-23.0b8.tar.bz2

и хочу получить, допустим

name=firefox
ver=23.0
betaver=8
arc=tar.bz2

Не поможете ли, как через sed/awk , а может даже и простой core-utils вывести эти переменные/извлечь из имени тарболла.tar.bz2?

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 1)

Не взлетит. Слишком много разных вариантов.

anonymous
()
$ cat parsename.sh 
#!/bin/sh

filename=$1

arc=$(echo $filename | sed 's/^.*\.\(\(tar\.\(bz2\|gz\|xz\)\|tgz\|txz\)\)$/\1/')
vername=${filename%.$arc}
name=${vername%-*}
ver=${vername#$name-}
betaver=${ver##*b}
[ "$betaver" == "$ver" ] && betaver=
ver=${ver%b$betaver}

cat <<EOF
name=$name
ver=$ver
betaver=$betaver
arc=$arc
EOF
$ ./parsename.sh firefox-23.0b8.tar.bz2
name=firefox
ver=23.0
betaver=8
arc=tar.bz2
unterwulf
()
Ответ на: комментарий от unterwulf

прикольно) спасибо большое

сейчас разглядел, печаль все таки, да, возможна , если будет (какой-нибудь исходник, а может архив с бинарями аля) firefox-gtk3

все равно спасиб

NK ★★★★★
() автор топика

Ну. смотря насколько формализованы правила составления имён, настолько успешно возможно расшифровать их обратно.

$ alias splitname="sed 's/\(.*\)-\([0-9\.]*\)\(b\([0-9]*\)\)*\(\.\)\([a-zA-Z0-9\.]*\)/name=\1\nver=\2\nbetaver=\4\narc=\6/'"

$ echo firefox-23.0.tar.bz2 | splitname
name=firefox
ver=23.0
betaver=
arc=tar.bz2

$ echo firefox-23.0b10.tar.bz2 | splitname
name=firefox
ver=23.0
betaver=10
arc=tar.bz2

$ echo firefox-gtk3-48.0b99.tar.bz2 | splitname
name=firefox-gtk3
ver=48.0
betaver=99
arc=tar.bz2

$ echo noname-5.gz | splitname
name=noname
ver=5
betaver=
arc=gz

justAmoment ★★★★★
()
Последнее исправление: justAmoment (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.