如何从文件名中提取一个下划线分隔的字段?

问题描述 投票:-1回答:1

我有一个像这样的文件名列表:

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

我需要先取两个零零,然后尝试

timestep=${filename:34:36}但这不起作用。

我有些惊讶,因为我在其他脚本中使用了相同的方法,但是我从未遇到过问题。

谢谢

bash filenames parameter-expansion
1个回答
1
投票
timestep="${filename:34:2}"

2是长度。


来自man bash

${parameter:offset:length}:子字符串扩展。从offset指定的字符开始,扩展到参数值的最大长度字符。 [...]

© www.soinside.com 2019 - 2024. All rights reserved.