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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |