условное замещение - PullRequest
       6

условное замещение

0 голосов
/ 14 мая 2018

У меня есть файл, в котором некоторые строки содержат даты, выглядящие так:

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

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

Я хотел бы изменить место первой и второй даты, но только если первая дата наступает до второй.

Возможно ли что-то подобное с использованием sed или некоторых других утилит командной строки linux?

1 Ответ

0 голосов
/ 14 мая 2018

Лучший инструмент для работы - 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...