Linux
linux/solaris 在文件中每一行的開頭插入日期和時間
我想在某個文件的每一行的開頭添加日期和時間
我使用 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`]"