Soy nuevo en programación !!
¿Alguien puede ayudar a eliminar el :en la primera posición en una marca de tiempo::29.06.2019 23:03:17
Actualmente estoy tratando de hacerlo usando los comandos awk / cut como se muestra a continuación:
TDS="$(grep 'Logfile started' process.log | awk '{print $3,$4}' | cut -d: -f2)"
echo "$TDS"
29.06.2019 23
¡Y la salida no es lo que quería! Quiero imprimirlo como 29.06.2019 23:03:17.
fuente

Aquí hay una
sedsolución:Lo que
sed 's/^://'está haciendo el comando es sustituirsel carácter de dos puntos:desde el comienzo^de cada línea con la cadena vacía//.Aquí hay una
awksolución complicada , donde cambiamos el separador de campo a^:, descrito anteriormente, y sacamos el segundo campo (de cada línea):La tarea podría llevarse a cabo también con
grep( explicación ), probablemente esta podría ser la solución más rápida para una gran cantidad de datos:O procese el archivo directamente con el siguiente comando, donde
^se elimina la limitación :Lo anterior también podría lograrse mediante
sedgrupos de captura()->\1:Donde la expresión
^.*<something>.*$coincidirá con la línea completa, que contiene<something>. El comandos/old/new/sustituirá esta línea por el contenido del primer grupo de captura (la expresión entre paréntesis podría ser más concreta). La opción-rhabilita las expresiones regulares extendidas. La opción-nsuprimirá la salida normal desedy finalmente el comandopimprimirá las coincidencias.fuente
awkpodría tener un FS de varios caracteres con caracteres con un significado especial! Cosa que aprendí hoy.Como ya está procesando esto
awk, también puede hacer todo directamente:El
subformato general del comando essub(/REGEX/, REPLACEMENT, TARGET)y reemplazará todas las coincidencias para la expresión regularREGEXcon la cadenaREPLACEMENTen la cadena de entradaTARGET. Aquí, estamos reemplazando el primero:(^significa "el comienzo") del tercer campo ($3) con nada.Por supuesto, si está haciendo eso en awk, también puede hacer todo en awk y hacer todo en una sola operación:
O, en tu caso:
fuente
Otra solución bash:
xargsconviertestdin(entrada estándar) en parámetros posicionales para elbashcomando.echocontail -n1 /path/to/reportfile.txt.fuente