たとえば、次の文字列がありますtest1@test2
。
test2
この文字列の一部を取得する必要があります。どうすればbashでこれを行うことができますか?
パラメータ展開の使用:
str='test1@test2'
echo "${str#*@}"
#
文字は、パターンに一致する展開の最小のプレフィックスを削除します.%
文字は、パターンに一致する展開の最小のサフィックスを削除することを意味します。(だからあなたは"${str%@*}"
その部分を手に入れることができます"test1"
。)/
を意味します。Bash にはありますが、POSIX ではありません。パターン文字を 2 倍にすると、貪欲に一致します。
##
パターンに一致する展開の最大のプレフィックスを削除することを意味します。%%
パターンに一致する展開の最大の接尾辞を削除することを意味します。//
パターンに一致する展開のすべての部分文字列を削除することを意味します。echo "test1@test2" | awk -F "@" '{print $2}'
Bash での別の方法:
IFS=@ read -r left right <<< "$string"
echo "$right"
この手法は、文字列の最初の部分も提供することに注意してください。
echo "$left"
echo "test1@test2" | sed 's/.*@//'