我怎样才能从文件名中提取一个下划线分隔的字段?
How can I just extract one underbar-separated field from a filename?
我有一个这样的文件名列表:
REG_2016120200hourly_d01_20161202_00_00_00.nc
我想提取这个名字并放入一个变量中:
1)日期 20161202
for file in /path/*;
do
filename=$(basename -- "$file")
date=${filename:4:8}
echo $date
done
这是有效的,脚本给了我 20161202
我不知道为什么
2)时间步长 00
我需要取前两个零 00,我正在尝试
timestep=${filename:34:36}
但这行不通。
我有点惊讶,因为我在其他脚本中使用了相同的方法,而且我从来没有遇到过问题。
谢谢
timestep="${filename:34:2}"
2
是长度。
来自man bash
:
${parameter:offset:length}
: Substring Expansion. Expands to up to length characters of the value of parameter starting at the character specified by offset. [...]
我有一个这样的文件名列表:
REG_2016120200hourly_d01_20161202_00_00_00.nc
我想提取这个名字并放入一个变量中:
1)日期 20161202
for file in /path/*;
do
filename=$(basename -- "$file")
date=${filename:4:8}
echo $date
done
这是有效的,脚本给了我 20161202
我不知道为什么
2)时间步长 00
我需要取前两个零 00,我正在尝试
timestep=${filename:34:36}
但这行不通。
我有点惊讶,因为我在其他脚本中使用了相同的方法,而且我从来没有遇到过问题。
谢谢
timestep="${filename:34:2}"
2
是长度。
来自man bash
:
${parameter:offset:length}
: Substring Expansion. Expands to up to length characters of the value of parameter starting at the character specified by offset. [...]