linux/solaris 在文件每行开头插入日期和时间

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

答案1

或者使用另一个分隔符如“|”,我在 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

答案2

该命令中的斜杠太多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`]"

相关内容