Descripción gsub (r, s, t) Reemplaza todas las cadenas que coinciden con la expresión regular r con la cadena s en la cadena t. Devuelve el número de reemplazos. Si no se proporciona t, el índice predeterminado de $ 0 (s, t) devuelve la posición de la subcadena t en la longitud de la cadena s devuelve la longitud de la cadena s, cuando no se proporciona s, devuelve la longitud de $ 0 coincidencias (s , r) si la expresión regular r aparece en s, devuelve la posición inicial de la ocurrencia; si r no aparece en s, devuelve 0 división (s, a, sep) Descompone la cadena s utilizando el separador de campo sep Devuelve el número de elementos en el elemento de la matriz a. Si no se da sep, se usa FS. La misma forma se usa para la separación de matrices y la separación de campos. Sprintf Formatea la salida sub (r, s, t) Reemplaza la primera coincidencia de la expresión regular r con s en la cadena t. Devuelve 1 si tiene éxito, de lo contrario devuelve 0. Si no se da t, el valor predeterminado es $ 0. substr (s, p, n) devuelve la subcadena de la cadena s comenzando desde la posición p con una longitud máxima de n. Si no se proporciona n, devuelva la cadena restante de p tolower (s) para convertir todos los caracteres en mayúscula en string s a minúsculas y devuelva una nueva cadena, la cadena original no se cambiará para que el (los) máximo (s) sea el carácter Todos los caracteres en minúscula de la cadena s se convierten a mayúsculas y se devuelve una nueva cadena. La cadena original no se modifica. En awk: gsub y sub se proporcionan dos funciones de sustitución de cadenas. La diferencia entre los dos es que gsub es un reemplazo global, y sub solo reemplaza el contenido de la primera coincidencia. datos de prueba: Jalea: 26: 12474125874: 04713365412: 0081245: Jalea {# coincidirá con cada fila " Jelly " llena cadena con " JellyThink " si (gsub (/Jalea /" JellyThink " )) de molde # salida: JellyThink: 26: 12474125874: 04713365412: 0081245: JellyThink # el primer partido " JellyThink " cadena de caracteres se sustituye " Jelly " si (sub (/JellyThink /" Jelly ")) impresión # salida: jalea: 26: 12474125874: 04713365412: 0081245: jellyThink # convierte todos los caracteres en mayúsculas a minúsculas imprimir tolower ($ 0) # de salida: jalea: 26: 12474125874: 04713365412: 0081245: jellythink # todos los caracteres en minúsculas convierte a mayúsculas toupper de impresión ($ 0) # de salida: Jalea: 26: 12474125874: 04713365412: 0081245: JELLYTHINK # devuelve " T " posición de carácter, sólo puede devolver caracteres índice de posición de impresión ($ 0, " T ") # la $ 0 divididos Y calcule la longitud de cada campo, la salida es la siguiente: # [1] = Jalea, Longitud: 5 # [2] = 26 , Longitud: 2 # [3] = 12474125874, longitud: 11 # [4] = 04713365412, longitud: 11 # [5] = 0.081.245, longitud: 7 # [6] = JellyThink, longitud: 10 n = split ($ 0, campo, ": ") para (i = 1; i < = n; ++ i) {value = sprintf (" [% d] =% - 12s, longitud:% d ", i, campo [i ], longitud (campo [i])); valor de impresión} if (ubicación = coincidencia ($ 0, registro)) {printf (" coincidente con% s \\ n ", ubicación, registro en% d)} else {printf (" Lo sentimos, no coincide con% s \\ n ", reg)}} Función personalizada Permitir que la gente haga bricolaje, siempre es emocionante. En awk, también podemos personalizar el nuestro. La función, definida en awk, se escribe de la siguiente manera: nombre de la función (lista de parámetros) {sentencias} donde lista de parámetros es una lista de argumentos separados por comas que se pasan como argumentos a la función cuando se llama a la función. . A continuación, use un ejemplo simple para ilustrar el uso de funciones personalizadas: Datos de prueba: HelloWorld # Definir función función insert (string, pos, ins) {before = substr (string, 1, pos) after = substr (string , pos + 1) de devolución antes de entrada después de} cuerpo # script {inserto de impresión ($ 0, 5, " JellyThink ") de impresión antes # de salida: Hola imprimir después de las salidas #: mundo de la impresión $ 0 # salida: HelloWorld} porción de cuerpo guión Cuando imprimimos los valores de antes y después, encontramos que se puede generar. Hay un punto a tener en cuenta aquí. Awk, las variables definidas en la función, el valor predeterminado es global, y los parámetros pasados son pases de valores, es decir, incluso si el valor del parámetro pasado se modifica dentro de la función, fuera de la función, El valor del parámetro no se cambia. Esto es un poco como Lua. Mire de esta manera: Datos de prueba: HelloWorld # Definir función función insertar (cadena, pos, ins, antes, después) {antes = substr (cadena, 1, pos) after = substr (cadena, pos + 1) de retorno antes de ins después} cuerpo # script {insert de impresión ($ 0, 5, " JellyThink ") de impresión antes de # salida: < vacío > imprimir después de # salida: < vacío > print $ 0 # salida: HelloWorld } ¿Entiendes ahora? Al escribir funciones awk en el trabajo, debe prestar atención a los dos puntos siguientes: Los parámetros son valores pasantes Las variables definidas dentro de los parámetros también son variables globales Resumen Resumen Un artículo no es fácil, sino también cómo componer este resumen, pero también para verificar cada pieza de código en el artículo, este artículo y "jugar awk" esto, comenzó a escribirse a principios de octubre. Más tarde, arrojé Alibaba Cloud y perdí mucho tiempo. Afortunadamente, finalmente lo terminé hoy. No es facil ! ! Luchando ~~~
|