Linux

linux/solaris 在文件中每一行的開頭插入日期和時間

  • February 21, 2013

我想在某個文件的每一行的開頭添加日期和時間

我使用 sed 在文件中的每一行之前添加日期和時間

請建議我需要在我的 sed 中更新什麼以支持此操作,

我可以接受帶有 awk 或 perl 的其他解決方案,一個襯裡等……

# 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`]"

引用自:https://serverfault.com/questions/481072