regex - sed 条件替换
问题描述
我有一个文件,其中一些行包含看起来像这样的日期
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
推荐阅读
- java - @Bean:子类中唯一的 bean 名称
- pandas - 创建具有 3 列的条形图和饼图
- java - 在 Java Server Pages 的上下文中这叫什么?
- javascript - 在进一步执行之前等待 http.request 响应
- c# - 监控实时位置是否遵循 C# 中的路线
- c# - 向 MySQL 添加记录总是引发 - “输入字符串格式不正确”
- regex - 检查天气 我的邮件 ID 输入正确
- android - 如何以编程方式清除 ConstraintLayout 中的小部件(例如 ImageView)的约束?
- reactjs - 跟踪多个复选框的反应
- python - scipy.special.gammainc 不接受负输入