#! /bin/sh
lineversion ="/tmp/g-9.n.gggg1000.fr-worker1.V.2.tar.bz2"
我的问题:我怎样才能提取
g-9.n.gggg1000.fr-worker1.V.2
从
$lineversion
另一个变量
答案1
newvar=`echo $lineversion | sed 's/\.tar\.bz2//' | sed 's/\/tmp\///'`
sed
是 unix 的“搜索和替换”实用程序。在上面的例子中,我们s搜索第一个“ .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'