Aqui está minha solução awk (de um sistema Windows / XP com o MKS Tools instalado no diretório C: \ bin). Ele foi projetado para adicionar a data e a hora atuais no formato mm / dd hh: mm ao início de cada linha, tendo buscado o registro de data e hora do sistema à medida que cada linha é lida. Obviamente, você pode usar o padrão BEGIN para buscar o carimbo de data / hora uma vez e adicioná-lo a cada registro (todos iguais). Fiz isso para marcar um arquivo de log que estava sendo gerado para stdout com o carimbo de data e hora no momento em que a mensagem de log foi gerada.
/"pattern"/ "C\:\\\\bin\\\\date '+%m/%d %R'" | getline timestamp;
print timestamp, $0;
onde "padrão" é uma string ou regex (sem as aspas) a serem correspondidas na linha de entrada e é opcional se você deseja corresponder a todas as linhas de entrada.
Isso deve funcionar em sistemas Linux / UNIX também, basta se livrar do C \: \\ bin \\ saindo da linha
"date '+%m/%d %R'" | getline timestamp;
Obviamente, isso pressupõe que o comando "date" leva você ao comando padrão de exibição / configuração da data do Linux / UNIX sem informações específicas do caminho (ou seja, a variável PATH do ambiente está configurada corretamente).
cat somefile.txt
um pouco "enganoso"? Eu esperava que isso acontecesse "de uma só vez" e tivesse um único registro de data e hora. Este não seria um programa de teste melhor(echo a; sleep 1; echo b; sleep 3; echo c; sleep 2)
:?