У меня есть команда, которая выводит временную метку Unix, за которой следует некоторый текст:
> mycommand
1484169138 happened XYZ
1484169139 happened XZY
...
Я хочу превратить временные метки в удобочитаемые строки, но, похоже, не могу понять, как это сделать.
Я пробовал различные инструменты (например, sed
и awk
). Следующий ответ на stackoverflow кажется довольно близким; но я на FreeBSD, у которой, похоже, нет расширения GNU для использования e
:
$ mycommand |sed -E 's#([0-9]{10})#date -r \1#e'
sed: 1: "s#([0-9]{10})#date -r \1#e": bad flag in substitute command: 'e'
IFS=
разрывает разделение строки, так что все переходит в$d
, и, поскольку мы не знаем, генерирует лиmycommand
OP многострочный вывод с обратной косой чертой, мы не знаем, подходит ли-r
. Пожалуйста, подтвердите намерение и проверьте влияние, прежде чем вносить существенные изменения, подобные этому. 19.01.2017date -d@
, а неdate -r
? Я получаю эту ошибку:date: 1484169138: No such file or directory [] happened XYZ date: 1484169139: No such file or directory [] happened XZY
19.01.2017IFS=
полностью его ломает, и подход, которому я следовал, заключается в том, чтобы прочитать всю строку в переменную. Извиняюсь! 20.01.2017-d
для командыdate
. Пожалуйста, рассмотрите теги и остальную часть содержимого, прежде чем вносить подобные изменения - вы внесли существенное изменение в код в моем ответе, который превратил его в неправильный ответ. 20.01.2017date
действительно имеет параметр-d
, но он делает что-то совершенно другая.) 20.01.2017