我想在我的shell脚本中删除一个子字符串。我正在尝试如下:
fileName="Test_VSS_TT.csv.old"
这里我要删除字符串“.csv.old”和我的
test=${fileName%.*}
但是替换错误。
答案 0 :(得分:0)
你走了,
$ echo $f
Test_VSS_TT.csv.old
$ test=${f%%.*}
$ echo $test
Test_VSS_TT
%%
将进行最长时间的匹配。所以它从第一个点到最后一个点匹配,然后删除匹配的字符。
答案 1 :(得分:0)
您正在寻找test=${filename%%.*}
%.*
将匹配第一个.*
模式,而%%.*
将匹配最长的模式
<强> [编辑] 强>
如果sed
可用,您可以尝试类似的内容:echo "filename.txt.bin" | sed "s/\..*//g"
,这会产生filename
答案 2 :(得分:0)
如果您打算在没有扩展名的情况下提取文件名,那么这个怎么样?
$ echo ${fileName}
Test_VSS_TT.csv.old
$ test=`echo ${fileName} |cut -d '.' -f1`
$ echo $test
Test_VSS_TT
答案 3 :(得分:0)
echo&#34; Test_VSS_TT.csv.old&#34; | awk -F&#34;。&#34; &#39; {print $ 1}&#39;