Назад | Перейти на главную страницу

linux / solaris вставляет дату и время в начало каждой строки в файле

Я хочу добавить дату и время в начале каждой строки в каком-либо файле

Я использовал 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`]"