Linux awk incorporó la introducción de variables

  

awk es una excelente herramienta de procesamiento de texto, se puede decir que es un lenguaje de programación. A continuación se muestra la variable incorporada awk.

1. Tabla de variables incorporada

Descripción del atributo $ 0 Registro actual (como una sola variable) $ 1 ~ $ n El noveno campo del registro actual, separado por FS entre los campos FS Separador de campo de entrada predeterminado Es el espacio NF el número de campos en el registro actual, es decir, cuántas columnas NR ha leído el número de registros, es decir, el número de línea, desde el comienzo del registro de entrada RS, el separador se establece de manera predeterminada en la línea nueva. El separador de campo de salida es también un espacio ORS Separador de registro de salida, el valor predeterminado es la nueva línea. IGNORECASE Si es verdadero, entonces haga coincidir ARGIND ARGV insensible a mayúsculas del archivo procesado actualmente CONVFMT Formato de conversión de número% .6g ENVIRON UNIX variable de entorno ERRNO Mensaje de error del sistema UNIX FIELDWIDTHS Campo de entrada ancho Separador en blanco cadena FNR Número de registro actual OFMT número formato de salida% .6g RSTART cadena coincidente que coincide con RLENGTH longitud de cadena coincidente SUBSEP \\ 034


2, instancia

1, operaciones de uso común

[chengmo @ localhost ~] $ awk '/^ root /{print $ 0}' /etc /passwd root: x: 0: 0: root: /root: /bin /bash < Br>

/^ raíz /es la expresión de selección, $ 0 La tabla es progresiva



2. Configuración del separador de campo (método de uso de FS)

[chengmo @ localhost ~] $ awk 'BEGIN { FS = ": "} /^ root /{print $ 1, $ NF} '/etc /passwdroot /bin /bash


FS es un separador de campo que puede configurar usted mismo. El valor predeterminado es un espacio, ya que passwd está separado por ": ", por lo que necesita modificar el separador predeterminado. NF es el número total de campos, $ 0 representa el registro de la fila actual, $ 1- $ n es la fila actual y cada campo corresponde a un valor.

3, el número de registros (NR, método de uso FNR)

[chengmo @ localhost ~] $ awk 'BEGIN {FS = ": "} {print NR, $ 1, $ NF} '/etc /passwd1 root /bin /bash2 bin /sbin /nologin3 daemon /sbin /nologin4 adm /sbin /nologin5 lp /sbin /nologin6 sync /bin /sync7 shutdown /sbin /shutdown … …
hell > NR obtiene la línea de registro actual

4, configura el separador de campo de salida (método de uso OFS)

[chengmo @ localhost ~] $ awk 'BEGIN {FS = ": "; OFS = " ^^ "} /^ root /{print FNR, $ 1, $ NF} '/etc /passwd1 ^^ root ^^ /bin /bash


Configuraciones OFS Separador de campo predeterminado

5, establecer separador de registro de línea de salida (método de uso ORS)


[chengmo @ localhost ~] $ awk 'BEGIN {FS = " : "; ORS = " ^^ "} {print FNR, $ 1, $ NF} '/etc /passwd 1 root /bin /bash ^^ 2 bin /sbin /nologin ^^ 3 daemon /sbin /nologin ^ ^ 4 adm /sbin /nologin ^^ 5 lp /sbin /nologin


De lo anterior, ORS se establece de manera predeterminada en una nueva línea, que se modifica a: " ^^ ", todas las líneas Separado por " ^^ ".

6. Adquisición de parámetros de entrada (uso ARGC, ARGV)

[chengmo @ localhost ~] $ awk 'BEGIN {FS = ": "; print " ARGC = " ARGC; para (k en ARGV) {print k " = " ARGV [k];}} '/etc /passwdARGC = 20 = awk1 = /etc /passwd


ARGC obtiene todo Ingrese el número de parámetros, ARGV obtiene el contenido del parámetro de entrada, es una matriz.


7, obtenga el nombre del archivo (use FILENAME)

[chengmo @ localhost ~] $ awk 'BEGIN {FS = ": "; print FILENAME} {print FILENAME} '/etc /passwd

/etc /passwd

FILENAME, $ 0- $ N, NF no puede usarse en BEGIN, BEGIN no puede obtener ninguna operación de archivo Variable


8. Obtenga la variable de entorno linux (utilizada por ENVIRON)

[chengmo @ localhost ~] $ awk 'BEGIN {print ENVIRON [" PATH "];}' /etc /passwd /usr/lib/qt-3.3/bin:/usr/kerberos/bin:/usr/lib/ccache:/usr/lib/icecc/bin:/usr/

local /bin : /bin: /usr /bin: /usr /local /sbin: /usr /sbin: /sbin: /usr /java /

jdk1.5.0_17 /bin: /usr/java/jdk1.5.0 _17 /jre /bin: /usr /local /mysql /bin: /home /web97 /bin

ENVIRON es una matriz sub-típica que puede obtener su valor por el valor clave correspondiente.


9. Configuración de formato de datos de salida: (uso OFMT)

[chengmo @ localhost ~] $ awk 'BEGIN {OFMT = "%. 3f "; 2 /3,123.11111111;} '/etc /passwd 0.667 123.111


El formato de salida predeterminado de OFMT es:% .6g Mantenga las seis posiciones decimales. La modificación de OFMT aquí modificará el formato de salida de datos predeterminado.


10, especifique el separador por ancho (para uso de FIELDWIDTHS)

[chengmo @ localhost ~] $ echo 20100117054932 |

awk 'BEGIN {FIELDWIDTHSS = 4 2 2 2 2 3 "} {print $ 1 " - " $ 2 " - " $ 3, $ 4 ": " $ 5 ": " $ 6} '2010-01-17 05:49:32


FIELDWIDTHS es una lista de números separados por espacios que se utiliza para separar los registros de los campos, FIELDWIDTHS = " 4 2 2 2 2 2 "significa que el ancho de $ 1 es 4, $ 2 es 2 y $ 3 es 2 ... Esta vez se ignorará: separador de FS.


11, RSTART RLENGTH usa

[chengmo @ localhost ~] $ awk 'BEGIN {start = match

(" esto es una prueba ", /[az] + $ /); print start, RSTART, RLENGTH} '11 11 4 [chengmo @ localhost ~] $ awk 'BEGIN

{start = match (" esto es una prueba " , /^ [az] + $ /); inicio de impresión, RSTART, RLENGTH} '0 0 – 1


RSTART se corresponde con la primera posición de la expresión regular, RLENGTH coincide con la longitud del carácter, No se encuentra como -1.


Lo anterior es: awk algunas variables incorporadas para usar, espero que haya algún problema que pueda comunicarse conmigo.

Copyright © Conocimiento de Windows All Rights Reserved