2013-05-04 1 views
2

У меня есть текстовый файл с таблицей, какКак обрабатывать только один столбец и конвертировать Юниксовое время в текстовом файле в BASH

367612510.243586 717.860170 
367612512.493918 722.249134 
367668441.429983 692.407935 
367668479.810461 692.407935 
367668482.618858 727.953771 
367668515.150386 727.953771 

, где первый столбец является UNIX время, а второй некоторое значение. Я хочу отобразить этот список с удобной для чтения датой и временем в BASH. Как это сделать?

Это можно сделать с помощью дополнительного файла сценария и xargs, но я ищу способ сделать это в одной строке.

ответ

6

попробовать

awk '{print strftime("%c",$1)}' input.txt 

другой подход, используя While-цикл в Баш

while read d _; do date -d @$d; done < input.txt 

обновление:

Баш решение напечатать второе поле, а

while read f1 f2; do echo $(date -d @$f1) $f2; done < input.txt 
+2

Спасибо вы, это работает! Моя команда 'awk '{print strftime ("% c ", $ 1), $ 2}' input.txt'. – 2013-05-04 13:34:12

+1

Примечание: первый вариант работает только в gawk, но не в mawk, который по умолчанию используется в Debian. – 2013-05-04 13:43:20

+0

Да, strftime() специфичен для gawk. Получите gawk. Не выполняйте цикл while. –