Interceptar a partir del carácter especificado (subcadena)
Este método de interceptación no puede especificar la longitud de la cadena y solo puede interceptar desde los caracteres especificados (subcadena) hasta el final de la cadena. Shell puede interceptar todos los caracteres a la derecha de un carácter específico (subcadena) o todos los caracteres a la izquierda.
1) Utilice el signo # para interceptar los caracteres de la derecha.
Puede utilizar #
el símbolo para interceptar todos los caracteres a la derecha del carácter (o subcadena) especificado. El formato específico es el siguiente:
${cadena#*caracteres}
Entre ellos, la cadena representa el carácter que se va a interceptar y los caracteres son el carácter especificado (o subcadena), que *
es una especie de carácter comodín y representa una cadena de cualquier longitud. *chars
Usados juntos significa: ignorar todos los caracteres de la izquierda hasta que se encuentren (los caracteres no serán interceptados).
Consulte el siguiente ejemplo:
- url="http://c.biancheng.net/index.html"
- echo ${url#*:}
El resultado es //c.biancheng.net/index.html
.
El mismo resultado también se puede obtener escribiendo lo siguiente:
- echo ${url#*p:}
- eco ${url#*ttp:}
Si no necesita ignorar los caracteres del lado izquierdo de los caracteres, no necesita escribirlos *
, por ejemplo:
- url="http://c.biancheng.net/index.html"
- eco ${url#http://}
El resultado es c.biancheng.net/index.html
.
Tenga en cuenta que el método de escritura anterior finaliza cuando encuentra el primer carácter coincidente (subcadena). Por ejemplo:
- url="http://c.biancheng.net/index.html"
- echo ${url#*/}
El resultado es /c.biancheng.net/index.html
. Hay tres en la cadena de URL /
y el resultado muestra que el shell /
finaliza la coincidencia cuando encuentra el primero.
Si desea hacer coincidir hasta el último carácter especificado (subcadena), puede usarlo ##
. El formato específico es:
${cadena##*caracteres}
Consulte el siguiente ejemplo:
- #!/bin/bash
- url="http://c.biancheng.net/index.html"
- echo ${url#*/} #El resultado es /c.biancheng.net/index.html
- echo ${url##*/} #El resultado es index.html
- str="---aa+++aa@@@"
- echo ${str#*aa} #El resultado es +++aa@@@
- echo ${str##*aa} #El resultado es @@@
2) Utilice % para interceptar los caracteres de la izquierda.
Puede utilizar %
el símbolo para interceptar todos los caracteres a la izquierda del carácter (o subcadena) especificado. El formato específico es el siguiente:
${cadena%caracteres*}
Preste atención *
a la posición, porque los caracteres del lado izquierdo de los caracteres deben interceptarse y los caracteres del lado derecho de los caracteres se ignoran, por lo que *
debe estar en el lado derecho de los caracteres. En otros aspectos , el uso de %
y #
es el mismo, por lo que no entraré en detalles aquí, solo daré ejemplos:
- #!/bin/bash
- url="http://c.biancheng.net/index.html"
- echo ${url%/*} #El resultado es http://c.biancheng.net
- echo ${url%%/*} #El resultado es http:
- str="---aa+++aa@@@"
- echo ${str%aa*} #El resultado es ---aa+++
- echo ${str%%aa*} #El resultado es ---
Reimpreso de: http://c.biancheng.net/view/1120.html