Я хочу добавить дату и время в начале каждой строки в каком-либо файле
Я использовал sed, чтобы добавить дату и время перед каждой строкой в файле
пожалуйста, посоветуйте, что мне нужно обновить в моем sed, чтобы поддержать это действие,
Я могу принять другое решение с awk или perl one liner и т. Д.
# date="[`date +%d"/"%b"/"%G"-"%T`]"
# echo $date
[21/Feb/2013-14:07:58]
# sed "s/^/$date /" file
sed: command garbled: s/^/[21/Feb/2013-14:07:58] /
пример
файл перед редактированием
param1=3478374
param2=34128374
param3=34783743
файл после редактирования
[21/Feb/2013-14:07:58] param1=3478374
[21/Feb/2013-14:07:58] param2=34128374
[21/Feb/2013-14:07:58] param3=34783743
или используйте другой разделитель, например "|", я пробовал на Mac.
$ date="[`date +%d"/"%b"/"%G"-"%T`]"
$ echo $date
[21/Feb/2013-21:17:22]
$ cat /tmp/a
param1=3478374
param2=34128374
param3=34783743
$ sed "s|^|$date |g" /tmp/a
[21/Feb/2013-21:14:15] param1=3478374
[21/Feb/2013-21:14:15] param2=34128374
[21/Feb/2013-21:14:15] param3=34783743
В этом слишком много слэшей sed
команда. Те, что в вашем $date
переменная должна быть экранирована.
Вот что я получаю (это несколько более полезное сообщение об ошибке):
> echo foo | sed "s/^/[21/Feb/2013-14:07:58] /"
sed: -e expression #1, char 9: unknown option to `s'
> echo foo | sed "s/^/[21\/Feb\/2013-14:07:58] /"
[21/Feb/2013-14:07:58] foo
Сбежавший:
date="[`date +%d"\/"%b"\/"%G"-"%T`]"
Вам может потребоваться двойное экранирование вашей переменной, если одинарного экранирования недостаточно, потому что экранирование может быть удалено при разыменовании переменной:
date="[`date +%d"\\/"%b"\\/"%G"-"%T`]"