1. Extraer los campos de una columna.
Para mayor comodidad de la ilustración, se prepara un pequeño archivo de datos (ip_cluster.txt) de la siguiente manera
ip core_num nombre_modelo 11.20 . 51.204 16 example_gbdt 11.20 . 51.205 16 example_gbdt 11.20 . 51.203 16 example_gbdt 11.20 . 246.134 16 example_gbdt 11.20 . 246.133 16 example_gbdt 11.20 . 246.131 8 example_dnn 11.20 . 246.130 8 example_dnn 11.20 . 246.129 8 ejemplo_dnn 11.20 . 246.128 8 example_dnn 11.20 . 244.121 8 example_dnn
- Extraiga la máquina correspondiente al modelo example_gbdt
awk ' {if ($ 3 == "example_gbdt") {print $ 1}} ' ip_cluster.txt # Si el nombre del modelo se coloca en la variable model_name, preste atención a la diferencia entre comillas model_name = example_gbdt awk ' {if ($ 3 == " ' $ model_name ' ") {print $ 1}} ' ip_cluster.txt
El comando anterior también puede omitir if () y escribir la condición de juicio directamente. Pero personalmente creo que si el programa es más fácil de entender, la palabra si debería agregarse.
2. Entrada interactiva
Si no agrega el siguiente archivo (ip_cluster.txt), awk se detendrá allí, esperando que el usuario ingrese de manera interactiva, sin ingresar una línea (llamada registro en awk), y realice un proceso.
También puede ingresar a través de la tubería, como
cat ip_cluster.txt | awk ...
3. Definir variables
# Defina la variable incorporada
awk ' BEGIN {OFS = ","} {print $ 1, $ 2, $ 3} ' ip_cluster.txt
# Defina la variable común
awk 'BEGIN {a = 1; b = 2} {print a + b}'
4. Variables incorporadas
Las variables de uso común son
- NR: Número de registro, que puede entenderse como el número de líneas
- NF: Número de campo, puede entenderse como el número de columnas
- FS: separador de campo, separador de entrada
- OFS: Separador de campo de salida, separador de salida
5. Importar múltiples archivos
Se pueden agregar varios archivos directamente después de awk, el efecto cuando se procesa es como si los múltiples archivos se unieran.
6. Asignación de columnas, codificación manual.
awk ' {$ 3 = "xxxx"; print $ 0} ' ip_cluster.txt # efecto de salida ip core_num xxxx 11.20 . 51.204 16 xxxx 11.20 . 51.205 16 xxxx 11.20 . 51.203 16 xxxx 11.20 . 246.134 16 xxxx 11.20 . 246.133 16 xxxx 11.20 . 246.131 8 xxxx 11.20 . 246.130 8 xxxx 11.20 . 246.129 8 xxxx 11.20. 246.128 8 xxxx 11.20 . 244.121 8 xxxx
7. Cooperación con expresiones regulares.
# La expresión regular se escribe entre dos barras diagonales awk ' /example_.*/{print $ 0} ' ip_cluster.txt
Repase brevemente las expresiones regulares básicas
- ^ Inicio, $ Fin
- [] Un carácter o relación OR, como [xyz], [a-zA-Z], [^ az] Nota: "^" entre corchetes significa inverso
- * Ocurre cero o más veces
- + Aparece una o más veces
- ? Puede o no puede
- {} ab {3} c, puede coincidir con abbbc; {} también puede ser un rango, como {3,4}, {3,}
- () Una parte de las cosas se puede ver como un todo, como (ab) + c, puede coincidir con ababc
8. Resumen
Awk es muy poderoso, especialmente en el conjunto de datos determinantes, que muestra una expresión fuerte. Con un archivo de datos, es comparable a una pequeña base de datos.