在第n次出现分隔符后获取子字符串

时间:2014-06-18 08:00:39

标签: regex string bash

已经存在类似的question,但它指的是文件,我的smth更简单。

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

让我们说有一个字符串

  

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'

分隔符是

  

/

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

  

0.0。 Loading_SOR_to_Landing / EGI / EGI_WV_WELLHDR.pjb

最简单的一个班轮是什么?

2 个答案:

答案 0 :(得分:1)

cut可以成功:

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

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

答案 1 :(得分:0)

使用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