脚本 Shell 提取字符串

脚本 Shell 提取字符串
#! /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'

相关内容