Necesito ayuda para extraer una cadena entre el símbolo "@" y un espacio " " en Bash.
Estoy usando Python Twitter Tools, y el resultado es así:
430438229200740352 2014-02-03 14:30:45 CST <HorizonAwon> @SawBlastt @WereAutomatic 101 for me to join as wellNecesito extraer las dos cadenas:
SawBlastt
WereAutomatic
También necesito configurarlos cada uno como una variable separada. Intenté jugar con sed y grep, pero no tuve resultados exitosos. Estoy realmente atascado en esto. La ayuda es muy apreciada. ¡Gracias!
Puedes usar:
s='430438229200740352 2014-02-03 14:30:45 CST <HorizonAwon> @SawBlastt @WereAutomatic 101 for me to join as well' grep -oP '@\K[^ ]*' <<< "$s" SawBlastt WereAutomaticOtro comando gnu grep, que utilicé principalmente.
grep -Po "(?<=@)[^ ]*" fileBASH tiene sus propias capacidades de coincidencia de expresiones regulares que funcionarán.
s="430438229200740352 2014-02-03 14:30:45 CST <HorizonAwon> @SawBlastt @WereAutomatic 101 for me to join as well" if [[ $s =~ @([A-Za-z]+)\ @([A-Za-z]+) ]]; then echo ${BASH_REMATCH[1]} ${BASH_REMATCH[2]} fi Para explicar, esto es lo que dice man bash :
El elemento de BASH_REMATCH con índice n es la parte de la cadena que coincide con la n-ésima subexpresión entre paréntesis.