这是我的字符串LIBRARY_TRGT_CANV,CANV_MATCH<anything>
我希望获取最后一次出现分隔符后的所有文本,即_TRGT_
:
期望的输出:
CANV,CANV_MATCH<anything>
- - - 或者 - - -
获取第二个下划线之后的所有文本 ieCANVL,CANVL_BATCH<anything>
答案1
没有sed
或awk
不需要;您可以在任何纯 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>