Por ejemplo, tengo una cadena: [email protected]
.Separar una cadena con la fiesta con el símbolo
que necesita para obtener la parte test2
de esta cadena. ¿Cómo puedo hacer esto con bash?
Por ejemplo, tengo una cadena: [email protected]
.Separar una cadena con la fiesta con el símbolo
que necesita para obtener la parte test2
de esta cadena. ¿Cómo puedo hacer esto con bash?
Usando Parameter Expansion:
str='[email protected]'
echo "${str#*@}"
#
dice Retire el más pequeño prefijo de la expansión coincida con el patrón.%
significa Elimine el sufijo más pequeño de la expansión que coincida con el patrón. (Así que usted puede hacer para conseguir "${str%@*}"
la parte "test1"
.)/
significa Retire la subcadena más pequeño y el primero de la expansión que coincida con el siguiente patrón. Bash lo tiene, pero no es POSIX.Si duplica el carácter del patrón, lo compara con avidez.
##
medios Eliminar la mayor prefijo de la expansión que coincida con el patrón.%%
medios Eliminar la mayor sufijo de la expansión que coincida con el patrón.//
medios Eliminar todas las subcadenas de la expansión que coincida con el patrón.¿Cómo cambio esto para imprimir test1 en lugar de test2? –
@ChrisF He ampliado mi respuesta para mostrar cómo hacerlo. – kojiro
echo "[email protected]" | sed 's/.*@//'
O, en bash, 'xxx = "test1 @ test2"; sed 's/.*@//' <<< $ x'. –
@JonathanLeffler Sé lo que quieres decir aquí, pero ¿no te faltan algunos 'x'es? – kojiro
Hmm ... sí, parece que 'dos equis' escapó. Es un poco tarde para editar el comentario ... –
echo "[email protected]" | awk -F "@" '{print $2}'
O, en bash, awk -F ' "@" '{print $ 2}' <<< "test1 test2 @"' – kojiro
Otra forma de Bash:
[email protected] read left right <<< "$string"
echo "$right"
posible duplicado de [la manipulación de cadenas en Bash. . . Extracción sección delantera] (http://stackoverflow.com/questions/2680274/string-manipulation-in-bash-removing-leading-section) – Kaz