2015-01-05 8 views
7

Ecco il mio codice:"BEGIN blocchi deve avere un ruolo di azione" Errore nello script awk

#!/bin/sh 

filename=$(/usr/bin/find -name "INSTANCE-*.log") 
echo "filename is " $filename 

awk ' 
BEGIN 
{ 
    print "Processing file: " filename 
} 

{ 
    if($0 ~ /Starting/) 
    { 
    print "The bill import has been Started on "$1 " " $2 
    } 

}' $filename > report.txt 

Quando ho eseguirlo ottengo il seguente errore:

BEGIN blocks must have an action part

mio blocco BEGIN ha un print quindi ha una parte azione. Cosa mi manca qui?

risposta

13

Ciò accade perché la parentesi graffa di apertura si trova nella riga successiva.

Così che cosa dovete fare è scrivere BEGIN { ... in questo modo:

BEGIN { 
print "Processing file: " filename 
} 

noti inoltre che il blocco principale può essere riscritta a:

/Starting/ {print "The bill import has been Started on "$1 " " $2} 

Cioè, if() e $0 sono impliciti in modo che possano essere saltati.

Problemi correlati