Я предполагаю, что <br>в вашем вопросе в конце dateстолбца есть что-то нежелательное. В любом случае, он может быть легко удален, если он присутствует. Однако, перейдя к основной части, вы можете достичь того, что вы пытаетесь сделать, используя
sort -k 2n filename.txt
Теперь приведенная выше команда выдаст выходные данные отсортированным образом. Теперь приведенная ниже команда должна дать то, что вы ищете.
sort -k 2n filename.txt | awk '/2013\/12\/03/ {exit} {print}'
объяснение
Команда sort в основном сортирует файл по второму столбцу, который является датой. Поэтому я изменил ваш входной файл, чтобы проверить, работает ли команда, поскольку во входном файле все данные отсортированы по умолчанию. После этого awkкоманда печатает все строки, пока мы не встретим конкретное совпадение.
тестирование
cat filename.txt
647919 2014/01/01
647946 2012/11/30
647955 2011/01/04
648266 2013/12/03
648267 2013/12/03
648674 2013/12/04
Теперь sort -k 2n filename.txtвывод
647955 2011/01/04
647946 2012/11/30
648266 2013/12/03
648267 2013/12/03
648674 2013/12/04
647919 2014/01/01
Теперь мы удовлетворены тем, что файл отсортирован по второму столбцу. Теперь, чтобы выбрать значения UPTO определенной даты,
sort -k 2n filename.txt | awk '/2013\/12\/03/ {exit} {print}'
В приведенном выше примере я получаю все значения до 2013/12/03. Выход есть,
647955 2011/01/04
647946 2012/11/30
Нет, <br>это часть моего файла
Если это так, мы можем немного изменить команду, как показано ниже.
awk '{print $1, substr($2, 1, length($2)-4)}' filename.txt |
sort -k 2n filename.txt | awk '/2013\/12\/03/ {exit} {print}'
Поэтому я просто удаляю все <br>теги из второго столбца, а затем добавляю вышеупомянутую команду.
Ссылки
https://unix.stackexchange.com/a/11323/47538
https://unix.stackexchange.com/a/83069/47538