Odpowiedzi:
Tutaj jest w Perlu:
perl -ne '$_ =~ s/([a-zA-Z0-9]+_){3}//; print $_;'
Na przykład:
% echo "username_token1_token2_token3_4_token4_2" | perl -ne '$_ =~ s/([a-zA-Z0-9]+_){3}//; print $_;'
token3_4_token4_2
Działa w następujący sposób:
Początkowo ciąg "username_token1_token2_token3_4_token4_2"
jest wstawiany do $_
zmiennej.
s/....//
([a-zA-Z0-9]+_)
{3}
//
print $_
sed 's/^[^:]*:[^_]*_[^_]*_[^_]*_//'
Po prostu używając bash:
alias some_command='echo "some_command Current view: username_token1_token2_token3_4_token4_2"'
read a b c < <(some_command)
token=$(IFS=_; set -- $c; shift 3; echo "$*")
echo $token
odbitki
token3_4_token4_2
Użyłem podstawienia procesu, aby przekierować dane wyjściowe polecenia do instrukcji read. Gdybym miał użyć potoku, odczyt miałby miejsce w podpowłoce, a zmienna $ c nie istniałaby w powłoce nadrzędnej.
token3_4_token4_2
część, czy chcesz ją wyodrębnić?