Shell脚本子字符串提取

时间:2014-06-14 09:14:10

标签: shell substring

我在一些模式后面有一组文件名。我需要在文件名字符串中插入日期。现在,我还有一些文件遵循略有不同的模式。我想知道单个字符串如何匹配这两个要求。

例如。文件名如下:

abcTrade_proj.dat 
abcPosition_proj.dat 
abcAccount_proj.dat

我使用下面的字符串来构建像abcTrade_yyyymmdd_proj.dat

这样的文件名
${filename%_*}_${DATE}_${filename#*_}

现在,除了上面的文件模式,我有模式:

abc_pqr_Account_proj.dat 
abc_pqr_Trade_proj.dat

我需要做的就是将字符串剪切到最后_,插入日期并附加_之后的字符串,用于两种文件模式。

两种情况都有解决方案吗?

1 个答案:

答案 0 :(得分:1)

如果可能,您可以使用sed构建新名称,如下所示:

DATE=$(date +%Y%m%d)
echo "abcTrade_pqr_proj.dat" | sed "s/^\(.*\)_\([^_]*\)/\1_${DATE}_\2/g" 

导致:

abcTrade_pqr_20140101_proj.dat