Как я могу манипулировать датами в каждой строке файла, используя только минимальные инструменты *nix?
http://pastebin.com/raw.php?i=rCLH4r4M
У меня есть текстовый файл: "hogyaza.txt".
Я хочу преобразовать "нормальные даты" в нем [только в начале строки] во время Unix. я знаю, как "преобразовать" одну строку:$ ONELINE='2011-01-24 19:13:19ASDF 01 24 19:13:19 router daemon.info dnsmasq-dhcp[1140]: DHCPDISCOVER(br-lan) 192.168.1.201 00:1b:37:a8:74:f1'; date +%s -d "$(echo $ONELINE | awk -F "ASDF" '{print $1}')"
1295892799
$
Но мне нужно это в этом формате:1295892799ASDF 01 24 19:13:19 router daemon.info dnsmasq-dhcp[1140]: DHCPDISCOVER(br-lan) 192.168.1.201 00:1b:37:a8:74:f1
или лучше этот формат:1295892799 19:13:19 router daemon.info dnsmasq-dhcp[1140]: DHCPDISCOVER(br-lan) 192.168.1.201 00:1b:37:a8:74:f1
вот файл:$ cat hogyaza.txt
2011-01-24 19:13:19ASDF 01 24 19:13:19 router daemon.info dnsmasq-dhcp[1140]: DHCPDISCOVER(br-lan) 192.168.1.201 00:1b:37:a8:74:f1
2011-01-24 19:13:19ASDF 01 24 19:13:19 router daemon.info dnsmasq-dhcp[1140]: DHCPOFFER(br-lan) 192.168.1.201 00:1b:37:a8:74:f1
2011-01-24 19:13:19ASDF 01 24 19:13:19 router daemon.info dnsmasq-dhcp[1140]: DHCPREQUEST(br-lan) 192.168.1.201 00:1b:37:a8:74:f1
2011-01-24 19:13:19ASDF 01 24 19:13:19 router daemon.info dnsmasq-dhcp[1140]: DHCPACK(br-lan) 192.168.1.201 00:1b:37:a8:74:f1
$
Кто-нибудь знает, как преобразовать, например: "^2011-01-24 19:13:19" даты в формате Unix в TXT?
Спасибо!
PS: это необходимо на маршрутизаторе openwrt, поэтому нет Perl:(((нет места для него на флэш-памяти
1 ответ
Если вы знаете, как преобразовать одну строку, то простой цикл будет обрабатывать все строки для вас:
while read line; do
orig_date=$(echo "$line" | awk -F "ASDF" '{print $1}')
new_date=$(date +%s -d "$orig_date")
echo "$line" | awk -F "ASDF" -vdate=$new_date -vOFS="ASDF" '{$1=date; print}'
done < hogyaza.txt
Это дает вывод, который выглядит следующим образом:
1295914399ASDF 01 24 19:13:19 router daemon.info dnsmasq-dhcp[1140]: DHCPDISCOVER(br-lan) 192.168.1.201 00:1b:37:a8:74:f1
1295914399ASDF 01 24 19:13:19 router daemon.info dnsmasq-dhcp[1140]: DHCPOFFER(br-lan) 192.168.1.201 00:1b:37:a8:74:f1
1295914399ASDF 01 24 19:13:19 router daemon.info dnsmasq-dhcp[1140]: DHCPREQUEST(br-lan) 192.168.1.201 00:1b:37:a8:74:f1
1295914399ASDF 01 24 19:13:19 router daemon.info dnsmasq-dhcp[1140]: DHCPACK(br-lan) 192.168.1.201 00:1b:37:a8:74:f1