InglésFrancésEspañol

icono de página de OnWorks

runawk - Online en la nube

Ejecute runawk en el proveedor de alojamiento gratuito de OnWorks sobre Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS

Este es el comando runawk que se puede ejecutar en el proveedor de alojamiento gratuito de OnWorks utilizando una de nuestras múltiples estaciones de trabajo en línea gratuitas, como Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS.

PROGRAMA:

NOMBRE


runawk - envoltorio para intérprete AWK

SINOPSIS


correr [opciones] Archivo de programa

correr -e programa

MOTIVACIÓN


Después de años de usar AWK para la programación, descubrí que a pesar de su simplicidad y
limitaciones AWK es lo suficientemente bueno para crear secuencias de comandos para una amplia gama de tareas diferentes. AWK no es
tan poderoso como sus contrapartes más grandes como Perl, Ruby, TCL y otros, pero tiene su
propias ventajas como la compacidad, la simplicidad y la disponibilidad en casi todos los similares a UNIX
sistemas. Personalmente, también me gusta su naturaleza basada en datos y su orientación de token, muy útil
técnicas para las utilidades de procesamiento de texto.

Desafortunadamente, los intérpretes de awk carecen de algunas características importantes y, a veces, no funcionan como
tan bien como pudieron hacer.

Problemas que veo (algunos de ellos, por supuesto)

1.
AWK carece de soporte para módulos. Incluso si creo programas pequeños, a menudo quiero usar
funciones creadas anteriormente y ya utilizadas en otros scripts. Es decir, sería genial
organizar funciones en las llamadas bibliotecas (módulos).

2.
Para pasar argumentos a "#!/ usr / bin / awk -f "script (no para intérprete awk), es
necesario anteponer una lista de argumentos con - (dos signos menos). En mi opinión, esto
se ve mal. Además, tal comportamiento viola las "Pautas de sintaxis de utilidades" POSIX / SUS.

Ejemplo:

awk_programa:

#!/ usr / bin / awk -f

EMPEZAR {
para (i = 1; i <ARGC; ++ i) {
printf "ARGV [% d] =% s \ n", i, ARGV [i]
}
}

Sesión de shell:

% awk_programa --opt1 --opt2
/ usr / bin / awk: opción desconocida --opt1 ignorado

/ usr / bin / awk: opción desconocida --opt2 ignorado

% awk_program - --opt1 --opt2
ARGV [1] = - opt1
ARGV [2] = - opt2
%

en mi opinión awk_programa el script debería funcionar así

% awk_programa --opt1 --opt2
ARGV [1] = - opt1
ARGV [2] = - opt2
%

3.
Cuando "#!/ usr / bin / awk -f "el script maneja argumentos (opciones) y quiere leer desde
stdin, es necesario agregar / dev / stdin (o `- ') como último argumento explícitamente.

Ejemplo:

awk_programa:

#!/ usr / bin / awk -f

EMPEZAR {
if (ARGV [1] == "--flag") {
bandera = 1
ARGV [1] = "" # para no leer el archivo llamado "--flag"
}
}

{
imprimir "bandera =" bandera "$ 0 =" $ 0
}

Sesión de shell:

% prueba de eco | awk_program - --flag
% prueba de eco | awk_program - --flag / dev / stdin
bandera = 1 $ 0 = prueba
%

Normalmente awk_programa debería funcionar así

% prueba de eco | awk_program --bandera
bandera = 1 $ 0 = prueba
%

4.
joder(1) que se envía con GNU awk no se puede utilizar en shebang. En la mayoría (¿todos?)
Scripts de UNIX que comienzan con

#! / usr / local / bin / igawk -f

no trabajará.

correr fue creado para resolver todos estos problemas

OPCIONES


-d Active un modo de depuración.

-e programa
Especifique el programa. Si -e no se especifica, el código AWK se lee desde Archivo de programa.

-f módulo_awk
Activar módulo_awk. Esto funciona de la misma manera que

#use "awk_module.awk"

directiva en el código. Múltiple -f se permiten opciones.

-F fs Establezca el separador de campo de entrada FS en la expresión regular fs.

-h Muestra información de ayuda.

-t Si se aplica esta opción, un directorio temporal es creado por correr y camino hacia ella
se pasa a awk proceso hijo. El directorio temporal se crea en
$ {RUNAWK_TMPDIR} (si está configurado), o $ {TMPDIR} (si está configurado) o / Tmp directorio
de lo contrario. Si #utilizar "tmpfile.awk" se detecta en un programa esta opción está activada
automáticamente.

-T Establezca FS en el carácter TAB. Esto es equivalente a -Pie'

-V Muestra información sobre la versión.

-v var=val
Asignar el valor val a la variable var antes de que comience la ejecución del programa.

DETALLES / INTERNOS


Standalone guión
En sistemas operativos similares a UNIX puede utilizar correr comenzando su guión con

#! / usr / local / bin / runawk

línea o algo como esto en lugar de

#!/ usr / bin / awk -f

o similar.

AWK módulos
Para activar los módulos, debe agregarlos en un script awk como este

#use "module1.awk"
#use "module2.awk"

esa es la línea que especifica el nombre del módulo y es tratada como una línea de comentario por AWK normal
intérprete pero es procesado por correr especialmente.

A menos que corras correr con opcion -e, #utilizar debe comenzar con la columna 0, es decir, sin espacios ni
Los símbolos de pestañas están permitidos antes y no se permiten símbolos entre # y use.

También tenga en cuenta que los módulos AWK también pueden "usar" otros módulos y así sucesivamente. Todos ellos son
recopilados en un orden de profundidad y cada uno se agrega a la lista de intérpretes de awk
argumentos precedidos de la opción -f. Es decir #utilizar la directiva es * NO * similar a #incluir
en el lenguaje de programación C, el código del módulo de runawk no se inserta en el lugar de #utilizar.
Los módulos de Runawk están más cerca del comando "usar" de Perl. En caso de que se mencione algún módulo
más de una vez, solo se agregará una -f, es decir, se eliminarán las duplicaciones
automáticamente.

Posición de #utilizar la directiva en un archivo fuente sí importa, es decir, el módulo anterior es
mencionado, se generará la -f anterior.

Ejemplo:

prog de archivo:
#! / usr / local / bin / runawk

#use "A.awk"
#use "B.awk"
#use "E.awk"

Código PROG
...

archivo B.awk:
#use "A.awk"
#use "C.awk"
Código B
...

archivo C.awk:
#use "A.awk"
#use "D.awk"

Código C
...

A.awk y D.awk no contienen la directiva #use

Si tu corres

runawk prog archivo1 archivo2

or

/ ruta / a / prog file1 file2

el siguiente comando

awk -f A.awk -f D.awk -f C.awk -f B.awk -f E.awk -f prog - archivo1 archivo2

realmente se ejecutará.

Puede comprobar esto ejecutando

runawk -d prog archivo1 archivo2

Módulo Buscar estrategia
Los módulos se buscan primero en un directorio donde el programa principal (o módulo en el que #use
se especifica la directiva). Si no se encuentra allí, entonces el entorno AWKPATH
la variable está marcada. AWKPATH mantiene una lista de directorios de búsqueda separados por dos puntos. Finalmente,
El módulo se busca en el directorio de módulos del sistema runawk, por defecto PREFIX / share / runawk pero
esto se puede cambiar en tiempo de compilación.

También se puede especificar una ruta absoluta al módulo.

Programa as an argumento
Como otros intérpretes correr puede obtener el script desde una línea de comando como esta

/ ruta / a / runawk -e '
#use "alt_assert.awk"

{
afirmar ($ 1> = 0 && $ 1 <= 10, "Valor incorrecto:" $ 1)

# su código a continuación
...
}'

correr también se puede utilizar para escribir en delineadores

runawk -f abs.awk -e 'BEGIN {print abs (-1)}'

Seleccionar a preferido AWK Interprete
Por alguna razón, es posible que prefiera un intérprete AWK u otro. La razón puede ser
eficiencia para una tarea en particular, extensiones útiles pero no estándar o cualquier otra cosa. Para
tell correr qué intérprete AWK usar, se puede usar #interp. Directivas

prog de archivo:
#! / usr / local / bin / runawk

#use "A.awk"
#use "B.awk"

#interp "/ usr / pkg / bin / nbawk"

# tu código aquí
...

Tenga en cuenta que #interp. La directiva también debe comenzar con la columna 0, no se permiten espacios antes
eso y entre # y interpretar.

A veces también tiene sentido brindar a los usuarios la posibilidad de seleccionar su AWK preferido
intérprete sin cambiar el código fuente. En correr es posible usar especial
Directivas # interp-var que establece un nombre de variable de entorno asignable por el usuario que
especifica un intérprete AWK. Por ejemplo, el siguiente script

archivo foobar:
#!/ usr / bin / env correr

# interp-var "FOOBAR_AWK"

EMPEZAR {
imprimir "Esta es una aplicación FooBar"
}

se puede ejecutar como

env FOOBAR_AWK = mawk foobar

o solo

Foobar

En el primer caso maullar se utilizará como intérprete AWK, en este último, el AWK predeterminado
Interprete.

Gracias a existente módulos only
En el mundo UNIX, es una práctica común escribir archivos de configuración en un lenguaje de programación.
de la aplicación. Es decir, si la aplicación está escrita en Bourne shell, la configuración
Los archivos para dicha aplicación a menudo también se escriben en Bourne. Usando RunAWK uno puede hacer
lo mismo para las aplicaciones escritas en AWK. Por ejemplo, el siguiente código usará
~ / .foobarrc archivo si existe; de ​​lo contrario, se usará /etc/foobar.conf si existe.

archivo foobar:
#!/ usr / bin / env correr

# uso seguro "~ / .foobarrc"" /etc/foobar.conf "

EMPEZAR {
imprimir foo, bar, baz
}

presentar ~ / .foobarrc:
EMPEZAR {
foo = "foo10"
bar = "bar20"
baz = 123
}

Por supuesto, # uso seguro La directiva también se puede utilizar para otros fines. # uso seguro
La directiva acepta tantos módulos como desee, pero como máximo se puede incluir uno usando awk
opción -f, otras se ignoran en silencio, también tenga en cuenta que los módulos se analizan de izquierda a
Derecha. La tilde inicial en el nombre del módulo se reemplaza con el directorio de inicio del usuario. Otro
ejemplo:

archivo foobar:
#!/ usr / bin / env correr

#use "/usr/share/foobar/default.conf"
# uso seguro "~ / .foobarrc"" /etc/foobar.conf "

tu codigo esta aqui

Aquí, la configuración predeterminada se establece en /usr/share/foobar/default.conf, y la configuración
Los archivos (si los hay) se utilizan para anularlos.

Fijar entorno
En algunos casos, es posible que desee ejecutar el intérprete AWK con un entorno específico. Para
Por ejemplo, su secuencia de comandos puede estar orientada a procesar solo texto ASCII. En este caso puedes ejecutar
AWK con el entorno LC_CTYPE = C y usa rangos de expresiones regulares.

correr proporciona un #entorno directiva para esto. La cadena entre comillas dobles se pasa a
putenv(3) función libc.

Ejemplo:

prog de archivo:
#! / usr / local / bin / runawk

#env "LC_ALL = C"

$ 1 ~ / ^ [AZ] + $ / {# AZ es válido si LC_CTYPE = C
imprimir $ 1
}

SALIR ESTADO


Si el intérprete AWK sale normalmente, correr sale con su estado de salida. Si intérprete AWK
fue asesinado por señal, correr salidas con estado de salida 128 + señal.

MEDIO AMBIENTE


AWKPATH
Lista de directorios separados por dos puntos donde awk se buscan módulos.

RUNAWK_AWKPROG
Establece la ruta al intérprete AWK, utilizado de forma predeterminada, es decir, esta variable anula
el valor predeterminado en tiempo de compilación. Tenga en cuenta que la directiva #interp anula esto.

RUNAWK_KEEPTMP
Si se establece, los archivos temporales no se eliminan.

Utilice runawk en línea utilizando los servicios de onworks.net


Servidores y estaciones de trabajo gratuitos

Descargar aplicaciones de Windows y Linux

  • 1
    rpmsunidos
    rpmsunidos
    ¡Únase a nosotros en Gitter!
    https://gitter.im/unitedrpms-people/Lobby
    Habilite el repositorio URPMS en su
    sistema -
    https://github.com/UnitedRPMs/unitedrpms.github.io/bl...
    Descargar unitedrpms
  • 2
    Impulsar las bibliotecas de C ++
    Impulsar las bibliotecas de C ++
    Boost ofrece portátiles gratuitos
    Bibliotecas de C++ revisadas por pares. Él
    El énfasis está en las bibliotecas portátiles que
    funciona bien con la biblioteca estándar de C++.
    Ver http://www.bo...
    Descargar bibliotecas Boost C++
  • 3
    VirtualGL
    VirtualGL
    VirtualGL redirige los comandos 3D de un
    Aplicación Unix / Linux OpenGL en un
    GPU del lado del servidor y convierte la
    renderiza imágenes en 3D en una secuencia de video
    con la cual ...
    Descargar VirtualGL
  • 4
    libusb
    libusb
    Biblioteca para habilitar el espacio de usuario
    programas de aplicación para comunicarse
    Dispositivos USB. Público: Desarrolladores, Fin
    Usuarios/Escritorio. lenguaje de programacion: c
    Categorías ...
    Descargar libusb
  • 5
    TRAGO
    TRAGO
    SWIG es una herramienta de desarrollo de software
    que conecta programas escritos en C y
    C ++ con una variedad de alto nivel
    lenguajes de programación. SWIG se utiliza con
    diferente...
    Descargar SWIG
  • 6
    WooCommerce Nextjs reaccionar tema
    WooCommerce Nextjs reaccionar tema
    Tema React WooCommerce, creado con
    Siguiente JS, Webpack, Babel, Node y
    Express, usando GraphQL y Apollo
    Cliente. Tienda WooCommerce en React(
    contiene: Productos...
    Descargar el tema WooCommerce Nextjs React
  • Más "

Comandos de Linux

Ad