Awk uso común (Parte 1)

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.

Supongo que te gusta

Origin www.cnblogs.com/anhongyu/p/12725666.html
Recomendado
Clasificación