Questa risposta è pura GNU SED:
export text=" bla bla word word1 = string1 string2 string3 ";
echo "$text" | sed 's/.*= \?[a-zA-Z0-9]* \([a-zA-Z0-9]*\).*/\1/';
a cambiare un po 'la corda, perché è possibile avere più parole, le regole cambiano se questa parola non è l'ultimo.
Consente spiegare questo:
.*=
: tutti i caratteri prima di segno uguale.
.*= /?
: questa è la parte principale, dopo aver lasciato uno spazio vuoto e ho messo il/?, questo significa uno o zero occorrenze, non so se si lascia uno spazio qui.
[a-zA-Z0-9]*
tutte le occorrenze di a-z A-Z 0-9, la parola (stringa1).
\([a-zA-Z0-9]*\)
ottenere nuovamente tutte le occorrenze di a-zA-z0-9, la seconda parola.
\).*
tutte le altre cose.
/\1/
restituirà tutte le informazioni tra \ (\).
Spero che questo aiuti qualcuno.
dopo che perfrom eco "bla bla word word1 = strin1 string2" | awk -F "=" '{print $ 2}' Ricevo strin1 stringa2 (perché non stampa solo stringa2?) – lidia
hi anders: ho bisogno solo della seconda parola dopo il separatore non tutte le parole dopo il separatore, puoi cambiare il tuo awk secondo che lidia – lidia
@lidia corretto. Nell'esempio stampa string2. – Anders