使用子字符串作为分隔符分割字符串并获取后面的部分

使用子字符串作为分隔符分割字符串并获取后面的部分

这是我的字符串LIBRARY_TRGT_CANV,CANV_MATCH<anything>

我希望获取最后一次出现分隔符后的所有文本,即_TRGT_

期望的输出:

CANV,CANV_MATCH<anything>

- - - 或者 - - -

获取第二个下划线之后的所有文本 ieCANVL,CANVL_BATCH<anything>

答案1

没有sedawk不需要;您可以在任何纯 POSIX shell 中执行此操作。

假设您将字符串作为变量$string,您可以使用以下命令获取最后一个之后的所有内容_TRGT_

cutstring="${string##*_TRGET_}"

##删除字符串开头的最长可能匹配)

要获取第二个下划线之后的所有内容:

cutstring="${string#*_*_}"

#删除字符串开头的最短可能匹配)

sed当然,你也可以这样做;得到最后之后的内容_TRGT_

sed 's/.*_TRGT_//' <<< "$string"

或者获取第二个下划线之后的内容:

sed 's/^[^_]*_[^_]*_//' <<< "$string"

答案2

echo "LIBRARY_TRGT_CANV,CANV_MATCH<anything>"|awk -F "_TRGT_" '{print $NF}'

输出

CANV,CANV_MATCH<anything>

相关内容