Shell脚本中的字符串替换

时间:2014-09-30 06:25:51

标签: bash shell unix

我想在我的shell脚本中删除一个子字符串。我正在尝试如下:

fileName="Test_VSS_TT.csv.old"

这里我要删除字符串“.csv.old”和我的

test=${fileName%.*}

但是替换错误。

4 个答案:

答案 0 :(得分:0)

你走了,

$ echo $f
Test_VSS_TT.csv.old
$ test=${f%%.*}
$ echo $test
Test_VSS_TT

%%将进行最长时间的匹配。所以它从第一个点到最后一个点匹配,然后删除匹配的字符。

答案 1 :(得分:0)

您正在寻找test=${filename%%.*}

bash here和zsh here

中参数扩展的文档

%.*将匹配第一个.*模式,而%%.*将匹配最长的模式

<强> [编辑]

如果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;