例如,我有一个字符串:test1@test2
.
我需要得到test2
这个字符串的一部分。我怎么能用 bash 做到这一点?
使用参数扩展:
str='test1@test2'
echo "${str#*@}"
#
字符表示删除与模式匹配的扩展的最小前缀。%
字符表示删除与模式匹配的扩展的最小后缀。(所以你可以做得到"${str%@*}"
的"test1"
部分。)/
字符表示删除与以下模式匹配的扩展的最小和第一个子字符串。Bash 有它,但它不是 POSIX。如果将模式字符加倍,它会贪婪地匹配。
##
表示删除匹配模式的扩展的最大前缀。%%
表示删除匹配模式的扩展的最大后缀。//
表示删除与模式匹配的扩展的所有子字符串。echo "test1@test2" | awk -F "@" '{print $2}'
Bash 中的另一种方式:
IFS=@ read -r left right <<< "$string"
echo "$right"
请注意,此技术还提供了字符串的第一部分:
echo "$left"
echo "test1@test2" | sed 's/.*@//'