加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – Sed替换和外部命令

发布时间:2020-12-16 01:34:02 所属栏目:安全 来源:网络整理
导读:我有这种格式的输入日志文件 May 23 2012 11:59:56a;b;cMay 21 2012 16:54:12d;e;fMay 19 2012 16:22:52g;h;i... 我想以这种格式输出它 2012-05-23a;b;c2012-05-21d;e;f2012-05-19g;h;i... 使用sed,我知道如何替换日期行 % sed 's/.*:.*:.*/match_string/' i
我有这种格式的输入日志文件
May 23 2012 11:59:56
a;b;c
May 21 2012 16:54:12
d;e;f
May 19 2012 16:22:52
g;h;i
...

我想以这种格式输出它

2012-05-23
a;b;c
2012-05-21
d;e;f
2012-05-19
g;h;i
...

使用sed,我知道如何替换日期行

% sed 's/.*:.*:.*/match_string/' input.txt
match_string
a;b;c
match_string
d;e;f
match_string
g;h;i
...

使用日期,我知道如何转换日期:

% date -d 'May 23 2012 11:59:56' '+%Y-%m-%d'
2012-05-23

但是如何在sed命令期间对match_string进行求值?

如果你有GNU Sed可用,你可以使用e标志:
sed 's/.*:.*/date -d"&" "+%Y-%m-%d"/ge' file

将帮助您的示例,请参阅测试:

kent$ echo "May 23 2012 11:59:56
a;b;c
May 21 2012 16:54:12
d;e;f
May 19 2012 16:22:52
g;h;i"|sed 's/.*:.*/date -d"&" "+%Y-%m-%d"/ge'
2012-05-23
a;b;c
2012-05-21
d;e;f
2012-05-19
g;h;i

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读