В зависимости от того, насколько именно он вам нужен, и от того, насколько стандартными будут ваши входные данные, вы, вероятно, можете использовать AWK
для всего. Используя FS="regexp"
для указания разделителей полей, вы можете разбить исходную строку по любым токенам, которые имеют наибольший смысл, и собрать их вместе в любом порядке, используя printf
.
Например, предполагая, что и тире, и буква 'u' используются только для разделения полей:
myvar="jdk-6u20-solaris-i586.sh"
echo $myvar | awk 'BEGIN {FS="[-u]"}; {printf "%s1.%s.0_%s",$1,$2,$3}'
Аромат по вкусу.