繁体   English   中英

sed条件替换

[英]sed conditional substitution

我有一些行中包含如下所示的日期的文件

2017/07/21=2017/05/23 some text
  somethign
  somthig

2017/04/22=2017/05/23 text2
  smt1
  smt2

我想更改第一个和第二个日期的位置,但前提是第一个日期于第二个日期。

使用sed或其他一些命令行linux实用程序是否可能实现这种效果?

这项工作的最佳工具是awk Awk是用于记录解析和字段比较的理想工具。 以下将达到您的期望:

awk '/\//&&/=/{ split($1,d,"="); if (d[1] > d[2]) $1 = d[2]"="d[1] }1' <file>

这输出:

2017/05/23=2017/07/21 some text
  somethign
  somthig

2017/04/22=2017/05/23 text2
  smt1
  smt2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM