Shell 提取字符串的一部分的脚本

Shell 提取字符串的一部分的脚本,shell,Shell,在上面的行和类似的行中,我想提取服务和flow.xml之间存在的任何内容,并将其保存到变量DIST 使用POSIX sh中可用的参数扩展机制,输出应为SVPublishBankTransfers: ns/APAC_BankTransfers_Publish/CMB/services/svcPublishBankTransfers/flow.xml 这样做的优点是完全在过程中(比需要通过外部工具进行管道连接的方法要快),并且与所有POSIX外壳(灰烬、破折号、ksh等)兼容 参考资料: 使用P

在上面的行和类似的行中,我想提取
服务
flow.xml
之间存在的任何内容,并将其保存到变量DIST


使用POSIX sh中可用的参数扩展机制,输出应为SVPublishBankTransfers

ns/APAC_BankTransfers_Publish/CMB/services/svcPublishBankTransfers/flow.xml
这样做的优点是完全在过程中(比需要通过外部工具进行管道连接的方法要快),并且与所有POSIX外壳(灰烬、破折号、ksh等)兼容

参考资料:

使用POSIX sh中提供的参数扩展机制:

ns/APAC_BankTransfers_Publish/CMB/services/svcPublishBankTransfers/flow.xml
这样做的优点是完全在过程中(比需要通过外部工具进行管道连接的方法要快),并且与所有POSIX外壳(灰烬、破折号、ksh等)兼容

参考资料:

使用BASH正则表达式:

s=ns/APAC_BankTransfers_Publish/CMB/services/svcPublishBankTransfers/flow.xml
s=${s%/flow.xml}    # remove "/flow.xml"
s=${s##*/services/} # remove everything before "services"
echo "$s"
否则:

s='ns/APAC_BankTransfers_Publish/CMB/services/svcPublishBankTransfers/flow.xml'
[[ "$s" =~ /([^/]+)/[^/]*$ ]] && echo "${BASH_REMATCH[1]}"
svcPublishBankTransfers
使用BASH正则表达式:

s=ns/APAC_BankTransfers_Publish/CMB/services/svcPublishBankTransfers/flow.xml
s=${s%/flow.xml}    # remove "/flow.xml"
s=${s##*/services/} # remove everything before "services"
echo "$s"
否则:

s='ns/APAC_BankTransfers_Publish/CMB/services/svcPublishBankTransfers/flow.xml'
[[ "$s" =~ /([^/]+)/[^/]*$ ]] && echo "${BASH_REMATCH[1]}"
svcPublishBankTransfers