【问题标题】:Get a substring after an nth occurrence of a delimiter在第 n 次出现分隔符后获取子字符串
【发布时间】:2014-08-08 10:13:51
【问题描述】:

已经有一个类似的question,但它指的是一个文件,我有一些更简单的东西。

我需要在第n次出现分隔符后获取子字符串(因为出现的要求是“灵活的”)。

假设有一个字符串:

s='HLGAPL65.HOU150.CHEVRONTEXACO.NET/UPSTREAM_MDM_D2/Jobs/Keystone 版本 2.0.2.0/0.0。 Loading_SOR_to_Landing/EGI/EGI_WV_WELLHDR.pjb'

分隔符是:

/

我需要在第 4 次出现分隔符后获取子字符串。所以那将是:

0.0。 Loading_SOR_to_Landing/EGI/EGI_WV_WELLHDR.pjb

最简单的方法是什么?

【问题讨论】:

  • awk -F '/' '{print $5}' 文件

标签: regex string bash


【解决方案1】:

使用 BASH 你可以做到:

s='HLGAPL65.HOU150.CHEVRONTEXACO.NET/UPSTREAM_MDM_D2/Jobs/Keystone Release 2.0.2.0/0.0. Loading_SOR_to_Landing/EGI/EGI_WV_WELLHDR.pjb'

[[ "$s" =~ ^([^/]*/){4}(.*) ]] && echo "${BASH_REMATCH[2]}"
0.0. Loading_SOR_to_Landing/EGI/EGI_WV_WELLHDR.pjb

【讨论】:

    【解决方案2】:

    cut可以做到:

    $ cut -d'/' -f5- <<< "$s"
    0.0. Loading_SOR_to_Landing/EGI/EGI_WV_WELLHDR.pjb
    

    它将分隔符设置为 / 并从第 5 个字段打印到末尾 (5-)。

    【讨论】:

    • “美丽”这个词适合 cmets 来回答这样的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-25
    • 2021-02-10
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多