2013-04-20 13 views
5

Nel manuale gawk, ho descritto un operatore @include. Ciò ti consente di creare moduli .awk e condividere script, ecc. Include file.Desideri un AWK che implementa '@include'

Finora l'ultima cgywin, MinGW e GNU awk-s (awk, gawk, mawk, nawk, ...) ho trovato per Windows non riescono al primo: @include dichiarazione.

Qualcuno può indicarmi una versione che implementa l'intera implementazione di nawk o awk per Windows? Sono abbastanza sicuro che ci sia stato almeno un nawk, nel corso della giornata, che abbiamo scaricato per eseguire Windows NT.

In alternativa un lavoro in giro sarebbe utile nel frattempo. (Say un programma Includer awk pre-testato ??)

tia, Will

+1

Nessuna fortuna su una 'risposta' finora. Per i miei bisogni immediati; Ho creato un semplice script .cmd per concatenare tutti i file che voglio in una shell DOS: FOR x IN (...) loop. Ci è voluto molto meno tempo di scrivere la domanda. – will

risposta

5

Per quanto posso dire, @include file non sono supportati nativamente da gawk fino 4.x. Tuttavia, almeno su Linux, viene fornito con uno script di shell chiamato igawk che è possibile utilizzare al suo posto; Prepara gli script awk e sostituisce @include s con il contenuto del file incluso (trovato tramite $AWKPATH). Forse Cygwin ha anche questo script?

$ cat foo.awk 
@include bar.awk 
$ cat bar.awk 
BEGIN {print "Hello, world!" } 
$ awk -f foo.awk 
awk: foo.awk:1: @include bar.awk 
awk: foo.awk:1:^invalid char '@' in expression 
$ gawk -f foo.awk 
gawk: foo.awk:1: @include bar.awk 
gawk: foo.awk:1:^invalid char '@' in expression 
$ igawk -f foo.awk 
Hello, world! 

Si noti, tuttavia, che igawk e gawk 4 di @include sintassi non sono compatibili. Il codice nativo @include in gawk 4 richiede una stringa quotata per il nome file incluso; igawk prende una bareword e proverà a trovare un file con le virgolette nel suo nome se lo citate.

+0

Hmm, suppongo di dover cercare gwak v4. – will

0

Controlla unixtools - si legge come se fosse in grado di ordinarti. Buona fortuna ...

0

Si può provare runawk.

RunAWK è un piccolo wrapper per l'interprete AWK che aiuta a scrivere programmi standalone in AWK. Fornisce supporto per moduli e altre potenti funzionalità. Viene fornito con dozzine di moduli che forniscono mezzi efficienti per gestire le opzioni della riga di comando, potenti funzioni per la manipolazione di stringhe e matrici, nonché funzioni di ordinamento, matematica, tmpfile, braceexpand e molti altri.

http://sourceforge.net/projects/runawk

http://awk.info/?tools/runawk

1

Se si vuole attaccare ad awk di serie, fare quanto segue.

Creare il file di libreria awk e chiamiamolo myawklib.awk. Nel file della libreria, prendi le istruzioni del tuo programma awk. Non includere il BEGIN e il blocco END. Non includere il blocco BODY, a meno che tu non sappia cosa stai facendo. Hanno solo le funzioni della libreria.

È possibile eseguire sulla riga di comando:

awk -f myawklib.awk -f main.awk program_arguments

e

awk -f myawklib.awk -f another_main.argomenti del programma awk

Spero che questo possa essere d'aiuto.

  • MD
+0

Non sicuro. Ho avuto una cosa simile con un file di script che creava un grosso file da librerie più piccole. Awk ha un comando -I. Era meglio per me. Tuttavia l'intenzione principale è come #include for C, un metodo in cui le cose sono incluse nel testo; non solo "tipo libreria". – will

Problemi correlati