runawk

Software screenshot:
runawk
Dettagli del software:
Versione: 1.5.0
Data di caricamento: 19 Feb 15
Sviluppatore: Aleksey Cheusov
Licenza: Libero
Popolarità: 76

Rating: 1.0/5 (Total Votes: 1)

runawk è un piccolo wrapper per interprete AWK che impements sistema di moduli e aiuta a scrivere i programmi AWK standalone.
MOTIVAZIONE
Dopo anni di utilizzo di AWK per la programmazione che ho scoperto che, nonostante
la sua semplicità e le limitazioni AWK è abbastanza buono per lo scripting un'ampia
gamma di compiti diversi. AWK non è potente come il loro più grande
controparti come Perl, Ruby, TCL e altri, ma ha il proprio
vantaggi come la compattezza, la semplicità e la disponibilità su quasi tutto
Sistemi UNIX-like. Personalmente, come anche la sua natura data-driven e
orientamento gettone, tecnica molto utile per la semplice elaborazione di testo
utilities.
Ma Comunque! Purtroppo awk interpreti manca di alcune funzionalità importanti e
a volte non funziona buono come whould essere.
Alcuni problemi vedo (alcuni di loro, ovviamente).
1) AWK manca il supporto per i moduli. Anche se creo piccoli programmi, I
spesso vogliono utilizzare le funzioni create in precedenza e già utilizzato in
altri script. Cioè, è whould bello orginise funzioni in
cosiddetto librerie (moduli).
2) Al fine di passare gli argomenti a #! / Usr / bin / awk -f copione (non a awk
interprete), è necessario un elenco di prepand
argomenti con - (due signes minus). A mio parere, questo sembra male.
Esempio:
awk_program:
& Nbsp; & nbsp; & nbsp; #! / Usr / bin / awk -f
& Nbsp; & nbsp; & nbsp; INIZIO {
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; for (i = 1; i & Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; printf "ARGV [% d] =% s", i, ARGV [i]
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; }
& Nbsp; & nbsp; & nbsp; }
Shell sessione:
& Nbsp; & nbsp; & nbsp; % Awk_program --opt1 --opt2
& Nbsp; & nbsp; & nbsp; / Usr / bin / awk: sconosciuto opzione --opt1 ignorata
& Nbsp; & nbsp; & nbsp; / Usr / bin / awk: sconosciuto opzione --opt2 ignorata
& Nbsp; & nbsp; & nbsp; % Awk_program - --opt1 --opt2
& Nbsp; & nbsp; & nbsp; ARGV [1] = - opt1
& Nbsp; & nbsp; & nbsp; ARGV [2] = - opt2
& Nbsp; & nbsp; & nbsp; %
A mio parere awk_program script dovrebbe funzionare come questo (come
normali programmi fare)
& Nbsp; & nbsp; & nbsp; % Awk_program --opt1 --opt2
& Nbsp; & nbsp; & nbsp; ARGV [1] = - opt1
& Nbsp; & nbsp; & nbsp; ARGV [2] = - opt2
& Nbsp; & nbsp; & nbsp; %
E 'possibile utilizzare runawk.
3) Quando #! / Usr / bin / awk -f sceneggiatura gestisce gli argomenti (opzioni) e vuole
leggere da stdin, è necessario aggiungere
/ Dev / stdin (o `- '), come ultimo argomento esplicitamente.
Esempio:
awk_program:
& Nbsp; & nbsp; & nbsp; #! / Usr / bin / awk -f
& Nbsp; & nbsp; & nbsp; INIZIO {
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; if (ARGV [1] == "--flag") {
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; bandiera = 1
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; ARGV [1] = "" # per non leggere il file denominato "--flag"
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; }
& Nbsp; & nbsp; & nbsp; }
& Nbsp; & nbsp; & nbsp; {
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; print "flag =" bandiera "$ 0 =" $ 0
& Nbsp; & nbsp; & nbsp; }
Shell sessione:
& Nbsp; & nbsp; & nbsp; % Echo Test | awk_program - --flag
& Nbsp; & nbsp; & nbsp; % Echo Test | awk_program - --flag / dev / stdin
& Nbsp; & nbsp; & nbsp; flag = 1 $ 0 = prova
& Nbsp; & nbsp; & nbsp; %
Idealmente awk_program dovrebbe funzionare come questo
& Nbsp; & nbsp; & nbsp; % Echo test | awk_program --flag
& Nbsp; & nbsp; & nbsp; flag = 1 $ 0 = prova
& Nbsp; & nbsp; & nbsp; %
Tutti questi probles sono risolti con runawk e questo è il motivo per cui l'ho scritto.
Includo anche alcuni moduli runawk di distribuzione che sono
utile per me e spero sarà utile anche per voi.
Installazione
0) BSD make è necessario. I chiamarla semplicemente 'fare', ma il suo vero nome può
& Nbsp; & nbsp; variare. & nbsp; bmake e pmake sono possibili nomi.
& Nbsp; & nbsp; Se è necessario modificare le opzioni predefinite di costruzione,
& Nbsp; & nbsp; eseguire fare come questo
& Nbsp; & nbsp; & nbsp; & nbsp; env [YOUR_ASSIGNMENTS] fare
& Nbsp; & nbsp; Vedere l'esempio seguente sezione
1) tarball Uncompress avete scaricato come questo
& Nbsp; & nbsp; gzip -DC runawk-X-Y-Z.tar.gz | tar -xf-
2) cd runawk-X-Y-Z
3) fare
4) (optional!) Make install-dirs
5) make install
Ci sono un sacco di variabili Makefile che può essere modificata durante
. Installazione & nbsp; Proprie variabili di Runawk (Tutto quello che sono all'inizio di
Makefile):
& Nbsp; PREFIX & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; - Dove runawk è installato
& Nbsp; MODULESDIR & nbsp; & nbsp; & nbsp; & nbsp; - Directory in cui i moduli sono installati a
& Nbsp; AWK_PROG & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; - Percorso di interprete awk
& Nbsp; STDIN_FILENAME - percorso del file di dispositivo stdin
Variabili BSD di make (più comunemente utilizzati,
per tutti gli altri - vedi la documentazione di marca e file .MK)
& Nbsp; BINDIR - dove runawk eseguibile si è installato a
& Nbsp; MANDIR - dove le pagine di manuale sono installati a
& Nbsp; BINOWN - runawk proprietario eseguibile
& Nbsp; BINGRP - runawk gruppo eseguibile
& Nbsp; MANOWN - pagina proprietario man
& Nbsp; MANGRP - Man Group pagina
Esempio:
& Nbsp; & nbsp; env CC = gcc
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; PREFIX = / home / cheusov / locale
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; LDFLAGS = '- L / usr / pkg / lib -Wl, -rpath -Wl, / usr / pkg / lib'
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; LDADD = -lextralib
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; CFLAGS = '- Werror -Wall'
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; CPPFLAGS = -I / usr / pkg / include
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; BINOWN = cheusov
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; BINGRP = utenti
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; MANOWN = cheusov
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; MANGRP = utenti
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; MKCATPAGES = no
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; fare -s tutto install-dirs install

Cosa c'è di nuovo in questa versione:

  • Le opzioni -i, -I, e tutte le opzioni lunghe sono state completamente rimosse.
  • Il -T opzione è stata aggiunta per l'ingresso a schede.
  • L'opzione -v è documentato nella pagina man.
  • Correzioni per avvertimenti gcc compilazione.
  • Correzioni per la compilazione con MAKEOBJDIR non vuota.
  • correzioni Typo in nuovi, runcmd.awk e pagine man.

Cosa c'è di nuovo nella versione 1.4.4:

  • Un bug nel rimuovere le sottodirectory in una directory temporanea era fisso.
  • Miglioramenti per runawk_modules.3.

Cosa c'è di nuovo nella versione 1.4.3:

  • (1) non utilizzare il sistema paexec

    ( 3) più per rimuovere la directory temporanea.

  • Il print_help funzione () è stato spostato dal modulo power_getopt.awk di init_getopt.awk.

Cosa c'è di nuovo nella versione 1.4.2:

  • Questa versione aggiunge runawk_modules.3 dove tutti i moduli sono documentata, disapprova opzioni lunghe, rimuove le opzioni -i e -I, e include le pagine man del tarball di distribuzione in modo pod2man non è necessaria per la costruzione.

Cosa c'è di nuovo nella versione 1.4.0:

  • In exitnow.awk, lo exitnow (stato) Funzione ora termina l'esecuzione dello script senza correre sezioni terminali, anche se lo stato == 0.
  • Il nuovo modulo io.awk include le funzioni is_ {file, dir, exec, socket, fifo, blockdev, chardev, link simbolico}, file_size, e file_type. tokenre.awk ha la nuova funzione splitre0 ().

Cosa c'è di nuovo nella versione 1.3.2:

  • array interni sono ora trasferiti automaticamente. Questo risolve uso di runawk (1), in combinazione con xargs (1), ad esempio, cat files.txt |. Xargs runawk -e '...'

Cosa c'è di nuovo nella versione 1.3.0:

  • Una correzione per un messaggio di avviso del compilatore Intel C.
  • Una correzione per il shquote funzione () dai moduli / shquote.awk.
  • Il codice sorgente del progetto è stata riorganizzata, permettendo così una facile installazione di qualsiasi sottoprogetto:. Esempi, moduli, runawk, alt_getopt, e Doc (TODO, README, ecc file)

Cosa c'è di nuovo nella versione 1.1.0:

  • È stata aggiunta una opzione -F
  • Nuove ord.awwas ftrans_in.awk, e moduli glob.awk sono stati inclusi.
  • Un nuovo eseguibile alt_getopt è stata inclusa per il parsing opzioni corte e lunghe in script di shell.
  • Nuovo min3, MIN4, min5, min_key, MIN_VALUE, e key_of_min_value (min.awk), e max3, Max4, MAX5, max_key, max_value, e key_of_max_value stati forniti funzioni (max.awk).
  • sono stati aggiunti nuovi campioni:. Esempi / demo_minmax, esempi / demo_tokenre3, esempi / demo_ftrans, examples / demo_glob *
  • Una nuova funzionalità è stata aggiunta in multisub.awk.
  • Piccoli miglioramenti sono stati fatti nella procedura di installazione.

Cosa c'è di nuovo in versione 0.16.0:

  • Un sacco di programmi dimostrativi per la maggior parte dei moduli sono stati creati runawk e sono in esempi / sottodirectory momento. Nuovo modulo MEGA;-) power_getopt.awk vedere gli esempi di documentazione e di programmi demo / demo_power_getopt. Rende opzioni di gestione davvero facile. Nuovi moduli: embed_str.awk has_suffix.awk has_prefix.awk readfile.awk modinfo.awk correzioni minori e miglioramenti in dirname.awk e basename.awk. Ora sono pienamente compatibili con dirname (1) e basename (1) RUNAWK imposta le seguenti variabili di ambiente per il sottoprocesso awk bambino: RUNAWK_MODC - Un certo numero di moduli (-f nomefile) passato a AWK RUNAWK_MODV_ - Percorso completo del modulo di #n , dove n è in [0..RUNAWK_MODC) gamma. RUNAWK imposta variabile di ambiente RUNAWK_ART_STDIN per il sottoprocesso awk bambino a 1 se aggiuntive / artificiale `- 'è stato aggiunto alla lista di argomenti di awk. Makefile: bmake-ismo sono stati rimossi. Ora Makefile è pienamente compatibile con FreeBSD make. Bersaglio CleanFiles viene usato al posto di regole fatte a mano fix minori in target 'test_all'

Programmi simili

Stratego/XT
Stratego/XT

3 Jun 15

Voodoo Compiler
Voodoo Compiler

20 Feb 15

Pike
Pike

20 Feb 15

SlimIt
SlimIt

14 Apr 15

Altri software di sviluppo Aleksey Cheusov

paexec
paexec

20 Feb 15

mk-configure
mk-configure

20 Feb 15

LMDBG
LMDBG

20 Feb 15

Commenti a runawk

I commenti non trovato
Aggiungi commento
Accendere le immagini!