在 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
我有一个需求,把一个文件名分成两部分。
所以我的文件名是:'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