如何解析字符串?

如何解析字符串?

我是 bash 新手,我正在创建一个脚本,循环遍历目录中的文件并根据文件名的一部分对文件执行某些操作,到目前为止我有以下内容:

#!/bin/bash
DIR="/Users/me/Documents/import/*"
for f in "$DIR"
do
  t=??????
  echo "Loading $f into $t..."
done

所以$f会输出类似这样的内容:/Users/me/Documents/import/time_dim-1272037430173 其中,我想要t相等time_dim,目录可以是可变长度并且-1272037430173是固定长度(顺便说一下它是unix时间戳)。

解决这个问题的最佳方法是什么?

答案1

未经测试:

t=`basename $f | sed -e 's/-[0-9]\+$//'`

答案2

你也可以这样做:

$ t=`basename $f|tr -d '[0-9-]'`
或者

$ t=`basename $f|gawk -F- '{print $1;}'`

编辑:我误读了这个问题

答案3

What is the best way to go about this? 

“最佳”方式,仅使用 bash 内部组件,:)

$ s=/Users/me/Documents/import/time_dim-1272037430173
$  echo ${s%-*}
/Users/me/Documents/import/time_dim
$ t=${s%-*}
$ echo ${t##*/}
time_dim

相关内容