【问题标题】:How can I just extract one underbar-separated field from a filename?如何从文件名中提取一个以下划线分隔的字段?
【发布时间】:2020-02-21 21:48:12
【问题描述】:

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

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} 但这不起作用。

我有点惊讶,因为我在其他脚本中使用了相同的方法,而且我从来没有遇到过问题。

谢谢

【问题讨论】:

    标签: bash filenames parameter-expansion


    【解决方案1】:
    timestep="${filename:34:2}"
    

    2 是长度。


    来自man bash

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-24
      • 2022-12-09
      • 2017-10-20
      • 1970-01-01
      • 1970-01-01
      • 2018-09-28
      • 2017-07-17
      • 1970-01-01
      相关资源
      最近更新 更多