В части моего сценария я пытаюсь создать список года и месяца, в который был отправлен файл.Поскольку файл содержит метку времени, я должен быть в состоянии сократить имена файлов до позиции месяца, а затем выполнить фильтрацию sort + uniq.Однако sed генерирует выброс для одного из файлов.
Я использую эту последовательность команд
ls -1 service*json | sed -e "s|\(.*201...\).*json$|\1|g" | sort |uniq
И это работает большую часть времени, за исключением того, что в некоторых случаях он выводит всю метку времени:
$ ls
service-parent-20181119092630.json service-parent-20181123134132.json service-parent-20181202124532.json service-parent-20190121091830.json service-parent-20190125124209.json
service-parent-20181119101003.json service-parent-20181126104300.json service-parent-20181211095939.json service-parent-20190121092453.json service-parent-20190128163539.json
service-parent-20181120095850.json service-parent-20181127083441.json service-parent-20190107035508.json service-parent-20190122093608.json
service-parent-20181120104838.json service-parent-20181129155835.json service-parent-20190107042234.json service-parent-20190122115053.json
$ ls -1 service*json | sed -e "s|\(.*201...\).*json$|\1|g" | sort |uniq
service-parent-201811
service-parent-201811201048
service-parent-201812
service-parent-201901
Я также пробовал этот вариант, но вторая строка вывода все еще возвращается:
ls -1 service*json | sed -e "s|\(.*201.\{3\}\).*json$|\1|g" | sort |uniq
Может кто-нибудь объяснить, почему service-parent-201811201048 возвращается после запрошенных 3 символов?
Спасибо.