#! /bin/sh
lineversion ="/tmp/g-9.n.gggg1000.fr-worker1.V.2.tar.bz2" 

Мой вопрос: как я могу извлечь

 g-9.n.gggg1000.fr-worker1.V.2

от

$lineversion 

в другой переменной

2 ответа2

2
newvar=`echo $lineversion | sed 's/\.tar\.bz2//' | sed 's/\/tmp\///'`

sed - это утилита unix "поиск и замена". В приведенном выше примере, мы с earching для первого».tar.bz2" (и выделяющиеся точки с предыдущей обратной косой черты) и заменить его ни с чем, а затем принимает , что выход и поиск„/ TMP /“и заменить его ничего подобного.

В общем: sed 's/search_for/replace_with/'

2

Вы можете использовать синтаксис подстроки для извлечения символов из фиксированной позиции:

echo ${lineversion:position:length}
echo ${lineversion:5:30}

Другим способом было бы вырезать немного ненужных символов:

echo ${lineversion} | cut -d '/' -f3 | sed 's/\.tar\.bz2$//g'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .