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
sed
solución:Lo que
sed 's/^://'
está haciendo el comando es sustituirs
el carácter de dos puntos:
desde el comienzo^
de cada línea con la cadena vacía//
.Aquí hay una
awk
solució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
sed
grupos 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-r
habilita las expresiones regulares extendidas. La opción-n
suprimirá la salida normal desed
y finalmente el comandop
imprimirá las coincidencias.fuente
awk
podrí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
sub
formato general del comando essub(/REGEX/, REPLACEMENT, TARGET)
y reemplazará todas las coincidencias para la expresión regularREGEX
con la cadenaREPLACEMENT
en 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:
xargs
conviertestdin
(entrada estándar) en parámetros posicionales para elbash
comando.echo
contail -n1 /path/to/reportfile.txt
.fuente