2016-01-05 2 views
0

J'installe un horodatage dans un bloc début:horodatage awk situé dans début du bloc

BEGIN { 
    timestamp = strftime("%Y%m%d%H%M%S"); 
} 

Je ne met pas à jour à nouveau horodatage dans le reste du script. Je m'attends à ce que l'horodatage ne change pas mais il le fait.

Plus tard dans le script, imprimer $0 à un fichier:

FNR>1{ 
    #do some stuff 
    print $0 > "/mnt/data/logs/TEST_"timestamp".csv" 
    ... 

changements d'horodatage et il continue d'imprimer un nouveau fichier. . . TEST_1.csv, TEST_2.csv. . .

Il fonctionne comme prévu sur un petit fichier, mais quand j'utilise un fichier de données complet, il imprime plusieurs fichiers

+1

Quelque chose doit modifier 'timestamp'. Pouvez-vous montrer le reste du code? Quel 'awk' est-ce? –

+0

Je suis incapable de reproduire cela en utilisant un fichier de 5 millions de lignes. –

+1

Le bloc BEGIN est invoqué une seule fois, quel que soit le nombre de lignes ou de fichiers. Peut-être que vous appelez le script plus d'une fois? – karakfa

Répondre

0

OK les gars, je compris la question. J'appelle un script awk auxiliaire que je ne pensais pas pertinent. Désolé de ne pas inclure cela à l'origine. Ainsi, lorsque j'appelle une fonction de logger sur ce script, elle met à jour la variable timestamp. J'ai corrigé le problème en changeant simplement timestamp à timestamp1 sur mon script.

Merci à tous ceux qui ont répondu et mis en place avec mon inexpérience awk!