2015-06-23 12 views
5

Sto cercando di analizzare un file di log che inizia con una colonna di data formattata: 06/22/2015 00:17:59awk - troppi file aperti edizione/Data parsing

Sto utilizzando il seguente codice per convertirlo in un timestamp Unix :

unix="date -d\""$1" "$2"\" \"+%s\""; unix | getline timestamp;

Tuttavia, quando faccio questo, awk non riesce con errore seguente:

awk: (FILENAME=/dev/fd/63 FNR=263350) fatal: cannot open pipe 'date -d"06/22/2015 00:17:59" "+%s"' (Too many open files)

Un modo per gestire questo o per analizzare la data in modo diverso?

risposta

13

Il tuo problema è che è necessario chiudere il tuo comando:

unix="date -d\""$1" "$2"\" \"+%s\""; unix | getline timestamp; close(unix) 

Se non si esegue questa operazione, un nuovo tubo è aperto per ogni record nel file di input, che conduce al problema che si stanno vivendo.