2016-11-08 84 views
1

我在Linux命令行,我有記錄文件與以下內容如何在每行的末尾跳過最後N個字符

Subscription Service Shutdown at 9:59PM UTC 
Subscription Service Restarted at 11:57PM UTC 

我想時間戳每前添加日期之後添加文本線

Subscription Service Shutdown at 01 Oct 2016 9:59PM UTC 
Subscription Service Restarted at 01 Oct 2016 11:57PM UTC 
+1

您嘗試了什麼? – romainl

+0

你正試圖添加一個已知字符串'01 Oct 2016'或當前日期? – Sundeep

+0

我將添加已知字符串 –

回答

1

像這樣:

SED -r「S /([0-9] + {1}:[0-9] + {1} [AZ] {2} * $ )/ 2016年10月1日\ 1/g「test.txt> new.txt

其中text.txt是您的日誌文件,」01 Oct 2016「是您的文本,\ 1是從小組賽。

0

你可以嘗試這樣的事情;

echo "Subscription Service Shutdown at 9:59PM UTC" | sed "s/at */at $(date '+%Y %b %d') /" 

例如;

$ echo "Subscription Service Shutdown at 9:59PM UTC" | sed "s/at */at $(date '+%Y %b %d') /" 
Subscription Service Shutdown at 2016 Nov 08 9:59PM UTC 
2

的VIM方式:

:%s/ at /&knownString/ 
0

不同的方式來做到這一點在vim

1)添加字符串後at

:%s/at \zs/01 Oct 2016/


2)求格式HH:MM的時間字符串接着是AM UTCPM UTC並添加串。添加$錨如果您只需要在行尾匹配

:%s/\v(\d{1,2}:\d{1,2}[AP]M UTC)/01 Oct 2016 \1/