$ ls *.MP3 | awk ‘{ printf(“”mv “”%s”” “”%s””n””, $0, tolower($0)) }’ | sh

Primero, creamos algunos archivos de demostración con la extensión .MP3. El segundo comando muestra al usuario lo que sucede cuando el cambio de nombre es exitoso. Finalmente, el último comando realiza la operación de cambio de nombre usando el comando mv en Linux.

29. Imprime la raíz cuadrada de un número

AWK ofrece varias funciones integradas para manipular números. Uno de ellos es la función sqrt (). Es una función similar a C que devuelve la raíz cuadrada de un número dado. Eche un vistazo rápido al siguiente ejemplo para ver cómo funciona esto en general.

$ awk 'BEGIN{ print sqrt(36); print sqrt(0); print sqrt(-16) }'

Dado que no puede determinar la raíz cuadrada de un número negativo, la salida mostrará una palabra clave especial llamada ‘nan’ en lugar de sqrt (-12).

30. Imprime el logaritmo de un número

La función awk log () proporciona el logaritmo natural de un número. Sin embargo, solo funcionará con números positivos, así que tenga en cuenta la validación de la entrada de los usuarios. De lo contrario, alguien podría romper sus programas awk y obtener acceso sin privilegios a los recursos del sistema.

$ awk 'BEGIN{ print log(36); print log(0); print log(-16) }'

Debería ver el logaritmo de 36 y verificar que el logaritmo de 0 sea infinito y que el logaritmo de un valor negativo sea ‘No es un número’ o nan.

31. Imprime el exponencial de un número

El exponencial os un número n proporciona el valor de e ^ n. Por lo general, se usa en scripts awk que tratan con números grandes o lógica aritmética compleja. Podemos generar el exponencial de un número usando la función awk incorporada exp ().

$ awk 'BEGIN{ print exp(30); print log(0); print exp(-16) }'

Sin embargo, awk no puede calcular exponencial para números extremadamente grandes. Debe hacer dichos cálculos utilizando como C y alimentar el valor a sus scripts awk.

32. Genere números aleatorios con AWK

Podemos utilizar el comando awk en Linux para generar números aleatorios. Estos números estarán en el rango de 0 a 1, pero nunca 0 o 1. Puede multiplicar un valor fijo por el número resultante para obtener un valor aleatorio mayor.

$ awk 'BEGIN{ print rand(); print rand()*99 }'

La función rand () no necesita ningún argumento. Además, los números generados por esta función no son precisamente aleatorios sino pseudoaleatorios. Además, es bastante fácil predecir estos números de una ejecución a otra. Por lo tanto, no debe confiar en ellos para cálculos sensibles.

33. Advertencias del compilador de colores en rojo

lanzarán advertencias si su código no mantiene los estándares del lenguaje o tiene errores que no detienen la ejecución del programa. El siguiente comando awk imprimirá las líneas de advertencia generadas por un compilador en rojo.

$ gcc -Wall main.c |& awk '/: warning:/{print ""x1B[01;31m"" $0 ""x1B[m"";next;}{print}'

Este comando es útil si desea identificar específicamente las advertencias del compilador. Puede usar este comando con cualquier compilador que no sea gcc, solo asegúrese de cambiar el patrón /: warning: / para reflejar ese compilador en particular.

34. Imprima la información UUID del sistema de archivos

El UUID o Identificador Universalmente Único es un número que se puede usar para identificar recursos como . Simplemente podemos imprimir la información UUID de nuestro sistema de archivos usando el siguiente comando awk de Linux.

$ awk '/UUID/ {print $0}' /etc/fstab

Este comando busca el UUID de texto en el archivo / etc / fstab usando patrones awk. Devuelve un comentario del archivo que no nos interesa. El siguiente comando se asegurará de que solo obtengamos aquellas líneas que comienzan con UUID.

$ awk '/^UUID/ {print $1}' /etc/fstab

Restringe la salida al primer campo. Entonces solo obtenemos los números UUID.

35. Imprima la versión de la imagen del kernel de Linux

Varias distribuciones de Linux utilizan imágenes del kernel de . Podemos imprimir fácilmente la imagen exacta del kernel en la que se basa nuestro sistema usando awk. Consulte el siguiente comando para ver cómo funciona esto en general.

$ uname -a | awk '{print $3}'

Primero emitimos el comando uname con la opción -a y luego canalizamos estos datos a awk. Luego, hemos extraído la información de la versión de la imagen del kernel usando awk.

36. Sumar números de línea antes de líneas

Los usuarios pueden encontrar archivos de texto que no contienen números de línea con bastante frecuencia. Afortunadamente, puede agregar fácilmente números de línea a un archivo usando el comando awk en Linux. Eche un vistazo de cerca al siguiente ejemplo para ver cómo funciona esto en la vida real.

$ awk '{ print FNR "". "" $0 ;next}{print}' test.txt

El comando anterior agregará un número de línea antes de cada una de las líneas en nuestro archivo de referencia test.txt. Utiliza la variable awk incorporada FNR para abordar esto.

37. Imprima un archivo después de ordenar el contenido

También podemos usar awk para imprimir una lista ordenada de todas las líneas. Los siguientes comandos imprimen el nombre de todos los países en nuestro test.txt en orden ordenado.

$ awk -F ':' '{ print $1 }' test.txt | sort

El siguiente comando imprimirá el nombre de inicio de sesión de todos los usuarios del archivo / etc / passwd .

$ awk -F ':' '{ print $1 }' /etc/passwd | sort

Puede cambiar fácilmente el orden de clasificación modificando el comando de clasificación.

38. Imprima la página del manual

La página de manual contiene información detallada del comando awk junto con todas las opciones disponibles. Es extremadamente importante para las personas que desean dominar completamente el comando awk.

$ man awk

Si desea aprender características complejas de awk, esto le será de gran ayuda. Consulte esta documentación siempre que tenga un problema.

39. Imprima la página de ayuda

La página de ayuda contiene información resumida de todos los posibles argumentos de la línea de comandos. Puede invocar la guía de ayuda para awk usando uno de los siguientes comandos.

$ awk -h		

Leave a Comment

Your email address will not be published.