Как я могу напечатать последние три даты следующего выхода:
User;month/day/year user1:01/01/2015 user1:01/01/2015 user1:01/01/2015 ... user1:01/09/2018 user1:01/08/2018 user1:01/07/2018 user1:01/04/2016 user1:01/02/2016 user1:01/01/2016
В этом случае (даты 2018 года)
РЕДАКТИРОВАТЬ:
У меня есть следующая команда с awk:
awk '{ print $1":" substr( $0,285,291 )}' $file_input | awk '{ print $1}' | sort -n -r
Желаемый результат:
user1:01/09/2018 user1:01/08/2018 user1:01/07/2018
Здесь сортируем по части YYYY
а затем по лексической части mm/dd
.
Это будут 7-10-ые символы и 1-5- е секунды второго поля :
-delimited соответственно, поэтому:
(здесь добавление -b
для разрешения (и игнорирования) пробелов вокруг:)
Попробуйте использовать сортировку следующим образом:
sort -rt/ -k3n -k1.11n -k2n < input | head -3
Это сортирует строки по 3 ключевым полям на основе /
разделителя: сначала год, затем месяц (поле 1, пропуская имя пользователя и двоеточие), затем поле 2 - все отсортированы по номерам. tail -3
выводит только последние (последние) 3 строки / даты.