Aquí está mi solución awk (de un sistema Windows / XP con MKS Tools instalado en el directorio C: \ bin). Está diseñado para agregar la fecha y hora actuales en la forma mm / dd hh: mm al comienzo de cada línea que ha obtenido esa marca de tiempo del sistema a medida que se lee cada línea. Por supuesto, podría usar el patrón BEGIN para obtener la marca de tiempo una vez y agregar esa marca de tiempo a cada registro (de todos modos). Hice esto para etiquetar un archivo de registro que se estaba generando para stdout con la marca de tiempo en el momento en que se generó el mensaje de registro.
/"pattern"/ "C\:\\\\bin\\\\date '+%m/%d %R'" | getline timestamp;
print timestamp, $0;
donde "patrón" es una cadena o expresión regular (sin las comillas) que debe coincidir en la línea de entrada, y es opcional si desea hacer coincidir todas las líneas de entrada.
Esto también debería funcionar en los sistemas Linux / UNIX, simplemente elimine el C \: \\ bin \\ que sale de la línea
"date '+%m/%d %R'" | getline timestamp;
Esto, por supuesto, supone que el comando "fecha" lo lleva al comando estándar de visualización / configuración de fecha de Linux / UNIX sin información de ruta específica (es decir, su variable de RUTA de entorno está configurada correctamente).
cat somefile.txt
un poco "engañoso"? Espero que suceda "a la vez" y tenga una sola marca de tiempo. ¿No sería este un mejor programa de prueba(echo a; sleep 1; echo b; sleep 3; echo c; sleep 2)
:?