#! /bin/sh
lineversion ="/tmp/g-9.n.gggg1000.fr-worker1.V.2.tar.bz2"
Мой вопрос: как я могу извлечь
g-9.n.gggg1000.fr-worker1.V.2
от
$lineversion
в другой переменной
newvar=`echo $lineversion | sed 's/\.tar\.bz2//' | sed 's/\/tmp\///'`
sed
- это утилита unix "поиск и замена". В приведенном выше примере, мы с earching для первого».tar.bz2" (и выделяющиеся точки с предыдущей обратной косой черты) и заменить его ни с чем, а затем принимает , что выход и поиск„/ TMP /“и заменить его ничего подобного.
В общем: sed 's/search_for/replace_with/'
Вы можете использовать синтаксис подстроки для извлечения символов из фиксированной позиции:
echo ${lineversion:position:length}
echo ${lineversion:5:30}
Другим способом было бы вырезать немного ненужных символов:
echo ${lineversion} | cut -d '/' -f3 | sed 's/\.tar\.bz2$//g'