Cuando se realizan programas de shell shell, a menudo involucran operaciones relacionadas con cadenas. Hay muchas instrucciones de comando, tales como: awk, sed puede hacer una variedad de operaciones de cadena. De hecho, el shell tiene una serie de símbolos de operación incorporados que pueden lograr efectos similares. Como saben, el uso de operadores internos omitirá el tiempo para iniciar un programa externo, por lo que la velocidad será muy rápida.
Primero, juzgue el valor de la cadena de lectura
expresión
que significa
$ {var} El valor de la variable var, igual que $ var $ {var-DEFAULT} Si no se declara var, entonces se usa $ DEFAULT como su valor * $ {var: -DEFAULT} Si no se declara var, O si el valor es nulo, entonces se usa $ DEFAULT como su valor * $ {var = DEFAULT} Si no se declara var, entonces se usa $ DEFAULT como su valor * $ {var: = DEFAULT} Si no se declara var, o Su valor es nulo, entonces $ DEFAULT es su valor * $ {var + OTHER} Si se declara var, su valor es $ OTHER, de lo contrario es una cadena nula $ {var: + OTHER} si var está establecido , entonces su valor es $ OTHER, de lo contrario es una cadena nula $ {var? ERR_MSG} Si no se declara var, imprima $ ERR_MSG * $ {var:? ERR_MSG} Si var no está establecida, imprima $ ERR_MSG * $ {! varprefix *} coincide con todas las variables previamente declaradas que comienzan con varprefix $ {! varprefix @} coincide con todas las variables previamente declaradas que comienzan con varprefix
Agregado " * " no significa: Claro que si cambias Si se ha establecido var, entonces su valor es $ var.
[chengmo @ localhost ~] $ echo $ {abc-'ok '} ok [chengmo @ localhost ~] $ echo $ abc
[chengmo @ localhost ~] $ echo $ {abc = 'ok'} ok [chengmo @ localhost ~] $ echo $ abcok
Si abc no declara " = " También asignará un valor a abc.
[chengmo @ localhost ~] $ var1 = 11; var2 = 12; var3 = [chengmo @ localhost ~] $ echo $ {! v @} var1 var2 var3 [chengmo @ localhost ~] $ echo $ { ! v *} var1 var2 var3
$ {! varprefix *} Similar a $ {! varprefix @}, puede buscar variables ya definidas por los caracteres de prefijo de nombre de variable, ya sea Valor nulo
Segundo, operaciones de cadena (longitud, lectura, reemplazo)
expresión
significado
$ {# cadena} $ longitud de cadena $ {cadena: posición} En $ cadena, extraiga la cadena $ {cadena: posición: longitud} de la posición $ posición en $ cadena, de La posición $ posición comienza a extraer la longitud de la subcadena $$ cadena # subcadena}. Desde el comienzo de la variable $ cadena, elimine la subcadena con la concordancia más corta $ subcadena $ {cadena ## subcadena} desde el comienzo de la variable $ cadena, elimine la más larga Subcadena haciendo coincidir $ substring $ {string% substring} Desde el final de la variable $ string, elimine la subcadena con la concordancia más corta $ substring $ {string %% substring} Desde el final de la variable $ string, elimine la subcadena que coincida con la más larga concordancia $ substring $ {string /substring /replacement} usa $ replacement en lugar del primer $ substring $ {string //substring /replacement} usa $ replacement en lugar de todos los $ substring $ {string /# substring /replacement} $ string prefix coincide con $ substring, luego se usa $ replacement en lugar de $ substring $ {string /% substring /replacement} si $ El sufijo de cadena coincide con $ substring, luego se usa $ replacement en lugar de $ substring coincidente
Descripción: " * $ substring " puede ser una expresión regular.
1. Longitud
[web97 @ salewell97 ~] $ test = 'Me encanta China' [web97 @ salewell97 ~] $ echo $ {# test} 12
$ {# Nombre de variable } Obtenga la longitud de la cadena
2. Intercepte la cadena
[chengmo @ localhost ~] $ test = 'Me encanta China' [chengmo @ localhost ~] $ echo $ {prueba: 5} e china [chengmo @ localhost ~] $ echo $ {prueba: 5: 10} e china
$ {nombre de variable: inicio: longitud} obtener subcadena
3.String deletion
[chengmo @ localhost ~] $ test = 'c: /windows/boot.ini' [chengmo @ localhost ~] $ echo $ {test # /}c:/windows/boot.ini[chengmo@localhost ~] $ echo $ {test # * /} windows /boot.ini [chengmo @ localhost ~] $ echo $ {test ## * /} boot.ini < Br>
[chengmo @ localhost ~] $ echo $ {prueba% /*} c: /windows [chengmo @ localhost ~] $ echo $ {prueba %% /*}
$ {nombre de variable #substring Expresión regular} Equipado con una subcadena desde el principio de la cadena para eliminar la expresión en la coincidencia.
$ {nombre de variable% subserie expresión regular} está equipada con una subcadena desde el final de la cadena para eliminar la expresión en la coincidencia.
Nota: $ {test ## * /}, $ {test% /*} es la forma más fácil de obtener el nombre del archivo o la dirección del directorio.
4.Cambio de cadena
[chengmo @ localhost ~] $ test = 'c: /windows/boot.ini' [chengmo @ localhost ~] $ echo $ {test /\\ //\\\\}c:\\windows/boot.ini[chengmo@localhost ~] $ echo $ {test //\\ //\\\\} c: \\ windows \\ boot.ini
$ {Variable /Buscar /Reemplazar valor} Uno " /" significa reemplazar el primero, " //" significa reemplazar todo, cuando aparece la búsqueda: " /" agregue el carácter de escape " \\ /" indica.
Tres, comparación de rendimiento
En la cáscara, a través de awk, sed, expr, etc. se puede lograr la operación de cadena anterior. A continuación realizamos una comparación de rendimiento.
[chengmo @ localhost ~] $ test = 'c: /windows/boot.ini' [chengmo @ localhost ~] $ tiempo para i en $ (seq 10000); haz a = $ {# prueba}; hecho;
real 0m0.173suser 0m0.139ssys 0m0.004s
[chengmo @ localhost ~] $ tiempo para i en $ (seq 10000); a = = (longitud expr $ Prueba); hecho;
real 0m9.734suser 0m1.628s
La diferencia de velocidad es cientos de veces, llamando al procesamiento de comandos externos, y el rendimiento del operador integrado es muy diferente. En la programación de shell, intente hacerlo con operadores o funciones incorporados. Usando awk, sed es similar a esto.
El programa en ejecución se llama proceso. Cuando un programa se almacena en un archivo ejecutable y
Linux y BSD son sistemas libres, de código abierto, similares a Unix. Incluso usan mucho del mismo
Git como el sistema de control de versiones distribuido más avanzado del mundo (nadie), probablement
Primero, descargue la dirección de descarga de magent: http://pan.baidu.com/s/1eRygtEUmkdir -p /usr
Linux instalación lrzsz basic tutorial
Instalación de Linux ARM-LINUX-GCC
Dos discos duros con dos métodos de Linux
La secuencia de comandos de monitoreo de tráfico de Linux
Cuestiones de permisos SELinux
Notas de instalación de Vmware Server para Linux y Windows
Análisis en profundidad de la solución Hot Standby de sistema dual solo para software
7 herramientas de línea de comando para monitorear sistemas Linux
Configurar la conexión de red en CentOS 6 /RHEL 6
Modifique el X-Cache en el encabezado de Squid a Powered-By-LinuxTone
El icono del escritorio del sistema Win7 tiene un fondo blanco cómo hacerlo
Variables de entorno del sistema de Windows Daquan (XP /Win7 /Win8)
Canonical no está interesado en el desarrollo del kernel de Linux
Versión móvil Win10 del nuevo resumen de características
Win8 create VHD virtual disk gráfico tutorial
Win10 cambia IE al navegador predeterminado dos métodos
Comando Centos yum Usando el tutorial
El viaje de PaaS busca valor en el dilema de la supervivencia