Intercepción de cadenas de Shell (#%)

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. *charsUsados ​​juntos significa: ignorar todos los caracteres de la izquierda hasta que se encuentren (los caracteres no serán interceptados).

Consulte el siguiente ejemplo:

 
  1. url="http://c.biancheng.net/index.html"
  2. echo ${url#*:}

El resultado es //c.biancheng.net/index.html.

El mismo resultado también se puede obtener escribiendo lo siguiente:

 
  1. echo ${url#*p:}
  2. eco ${url#*ttp:}


Si no necesita ignorar los caracteres del lado izquierdo de los caracteres, no necesita escribirlos *, por ejemplo:

 
  1. url="http://c.biancheng.net/index.html"
  2. 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:

 
  1. url="http://c.biancheng.net/index.html"
  2. 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:

 
  1. #!/bin/bash
  2.  
  3. url="http://c.biancheng.net/index.html"
  4. echo ${url#*/} #El resultado es /c.biancheng.net/index.html
  5. echo ${url##*/} #El resultado es index.html
  6.  
  7. str="---aa+++aa@@@"
  8. echo ${str#*aa} #El resultado es +++aa@@@
  9. 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:

 
 
  1. #!/bin/bash
  2.  
  3. url="http://c.biancheng.net/index.html"
  4. echo ${url%/*} #El resultado es http://c.biancheng.net
  5. echo ${url%%/*} #El resultado es http:
  6.  
  7. str="---aa+++aa@@@"
  8. echo ${str%aa*} #El resultado es ---aa+++
  9. echo ${str%%aa*} #El resultado es ---

 

Reimpreso de: http://c.biancheng.net/view/1120.html

Supongo que te gusta

Origin blog.csdn.net/liuwkk/article/details/108831656
Recomendado
Clasificación