У меня есть файл (как это часто бывает) с датами в * nix времени в секундах с начала эпохи, за которым следует сообщение и последнее поле «нить», которое я хочу выбрать. Все разделены знаком '|' как экспортировано из базы данных sqlite ...
* 1003 например *
1306003700|SENT|21
1277237887|SENT|119
1274345263|SENT|115
1261168663|RECV|21
1306832459|SENT|80
1306835346|RECV|80
В принципе, я могу использовать sed достаточно легко, чтобы выбирать и печатать строки, которые соответствуют полю "нить", и печатать соответствующее время с сообщениями, таким образом:
> cat file | sed -n "s/^\([0-9]*\)\|\(.*\)\|80$/\1 : \2/p"
1306832459 : SENT
1306835346 : RECV
Но что я действительно хочу сделать, так это передать поле времени командой unix date, поэтому:
> cat file | sed -n "s/^\([0-9]*\)\|\(.*\)\|80$/`date -r \1` : \2/p"
Но это, похоже, не работает - хотя, кажется, это принимает. Он просто печатает ту же (начало эпохи) дату:
Thu 1 Jan 1970 01:00:01 BST : SENT
Thu 1 Jan 1970 01:00:01 BST : RECV
Как / как я могу оценить / интерполировать обратную ссылку \ 1 на команду даты?
Может быть, sed не способ сопоставить эти строки (и отформатировать вывод за один раз) ...