awk/sed 修改log中的时间戳
1. use awk
https://stackoverflow.com/questions/2371248/how-to-convert-timestamps-to-dates-in-bash
https://www.oreilly.com/library/view/learning-awk-programming
https://superuser.com/questions/369204/whats-the-best-command-to-use-to-change-a-timestamp-to-readable-date-when-tail
echo "1685182062 b4:96:91:e7:b5:5a 192.168.1.207 ubuntu-f9d679eb0e ff:38:fe:2f:82:00:02:00:00:ab:11:ea:3a:b2:bd:b0:46:dd:8e" | \
awk '{ printf strftime("%c: ", $1); $1 = ""; print $0; }'
echo "1685182062 b4:96:91:e7:b5:5a 192.168.1.207 ubuntu-f9d679eb0e ff:38:fe:2f:82:00:02:00:00:ab:11:ea:3a:b2:bd:b0:46:dd:8e" | \
awk '{ format = "%d-%m-%Y/%H:%M:%S"; printf strftime(format, $1); $1 = ""; print $0; }'
echo "1685182062 b4:96:91:e7:b5:5a 192.168.1.207 ubuntu-f9d679eb0e ff:38:fe:2f:82:00:02:00:00:ab:11:ea:3a:b2:bd:b0:46:dd:8e" | \
awk -F"," '{OFS=","; $1=strftime("%Y-%m-%d %H:%M:%S", $1); print}'
echo "1685182062 b4:96:91:e7:b5:5a 192.168.1.207 ubuntu-f9d679eb0e ff:38:fe:2f:82:00:02:00:00:ab:11:ea:3a:b2:bd:b0:46:dd:8e" | \
awk '{$1=strftime("%c", $1); print}'
2. use sed
https://unix.stackexchange.com/questions/168315/how-can-i-convert-timestamps-in-a-column-to-a-date
echo "1685182062 b4:96:91:e7:b5:5a 192.168.1.207 ubuntu-f9d679eb0e ff:38:fe:2f:82:00:02:00:00:ab:11:ea:3a:b2:bd:b0:46:dd:8e" | \
sed 's/^/echo "/; s/\([0-9]\{10\}\)/`date +"%Y-%m-%d\/%H:%M:%S" -d @\1`/; s/$/"/' | bash
REF:
shell convert timestamp to date format
shell date timestamp to date
shell log line convert timestamp to date
shell log convert timestamp to date
shell log timestamp to date
awk log change timestamp
awk 高级用法
awk modify one field with shell command
awk modify one field
awk print $1 and change
awp changes print