Cette réponse est pure ETD GNU:
export text=" bla bla word word1 = string1 string2 string3 ";
echo "$text" | sed 's/.*= \?[a-zA-Z0-9]* \([a-zA-Z0-9]*\).*/\1/';
je change un peu la chaîne, car il est possible d'avoir plus de mots, les règles changent si ce mot est pas le dernier.
Lets expliquer ceci:
.*=
: tous les caractères avant le signe égal.
.*= /?
: c'est la partie principale, après égal je laisse un vide espace et je mets le/?, cela signifie une ou zéro ocurrences, ne sais pas si vous laisserez un espace ici.
[a-zA-Z0-9]*
toutes les occurrences de a-z A-Z 0-9, le mot (chaîne1).
\([a-zA-Z0-9]*\)
obtenir à nouveau tous les ocurrences de a-zA-z0-9, le deuxième mot.
\).*
toutes les autres choses.
/\1/
affichera toutes les choses entre \ (\).
J'espère que cela aide quelqu'un.
après I perfrom écho "bla bla mot mot1 = strin1 string2" | awk -F "=" '{print $ 2}' Je reçois strin1 string2 (pourquoi ne pas imprimer seulement string2?) – lidia
hi anders: Je n'ai besoin que du second mot après seperator pas tous les mots après seperator, pouvez-vous changer votre awk selon que lidia – lidia
@lidia fixe. Dans l'exemple, il imprime string2. – Anders