我有一个文件,其中一些行包含看起来像这样的日期
2017/07/21=2017/05/23 some text
somethign
somthig
2017/04/22=2017/05/23 text2
smt1
smt2
我想更改第一个和第二个日期的位置,但前提是第一个日期 之前。
是否可以使用sed
或其他一些命令行linux实用程序?
答案 0 :(得分:2)
这项工作的最佳工具是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