在 unix 中将文件名分成两部分

Cut file name into two parts in unix

我有一个需求,把一个文件名分成两部分。
所以我的文件名是:'SIC_ETL_MAIN_0.1.zip'
我想将文件名切割成部分并分别加载到两个变量中 预期输出:

SIC_ETL_MAIN - var1
0.1 - var2

使用 grep

$echo SIC_ETL_MAIN_0.1.zip |  grep -o '[A-Z_]*[A-Z]'
SIC_ETL_MAIN
$echo SIC_ETL_MAIN_0.1.zip |  grep -o '[0-9\.]*[0-9]'
0.1
$

编辑:变量赋值

$var1=$(echo SIC_ETL_MAIN_0.1.zip |  grep -o '[A-Z_]*[A-Z]')
$var2=$(echo SIC_ETL_MAIN_0.1.zip |  grep -o '[0-9\.]*[0-9]')
$echo "Var1=${var1}  Var2=${var2}"                                                
Var1=SIC_ETL_MAIN  Var2=0.1
$

如果您的 shell 恰好是 bash(或另一个 shell wit shubstrings)

a=SIC_ETL_MAIN_0.1.zip
b=${a%_*}
c=${a##*_}
d=${c%.*}

echo "$a | $b | $c | $d" # will output
SIC_ETL_MAIN_0.1.zip | SIC_ETL_MAIN | 0.1.zip | 0.1