LINUX.ORG.RU
решено ФорумAdmin

Помогите с регулярными выражениями в grep?

 , ,


0

1
$ls /dir1/dir2 | grep -E *2020-12-02*(.delta|.dump.gz)

Нужно найти элементы включающие 2020-12-02 и заканчивающиеся на ‘.delta’ или ‘.dump.gz’.

Гугл выдает то, что вообще никак не работает, или что я не так делаю?

Любое количество любых символов в регулярках, в отличие от шаблонов, – это .*, а не *. Ставить .* в начале не обязательно: grep всё равно выдаст строку целиком. Конец строки надо обозначить $. Анон чуть выше меня опередил, однако же у него строка должна начинаться с даты, что не вполне соответствует ТЗ.

Bagrov ★★★★★ ()
Ответ на: комментарий от anonymous
# ls /incrimental/bis_kamin55_psql
bis_kamin55_psql_daily_2020-12-02-09.dump.gz.delta  bis_kamin55_psql_daily_2020-12-02-18.dump.gz.delta  bis_kamin55_psql_monthly_2020-12-01.dump.gz.signature
bis_kamin55_psql_daily_2020-12-02-14.dump.gz.delta  bis_kamin55_psql_monthly_2020-12-01.dump.gz         start
# ls /incrimental/bis_kamin55_psql | grep -E "^2020-12-01.(delta|gz)$"

Shulman ()
Ответ на: комментарий от Shulman

Вот так сработало, спасибо всем!

Судя по примеру, если .delta тоже после .dump.gz, а после даты только оно тоже, то правильнее будет:

grep '_2020-12-02-18\.dump\.gz\(\.delta\)*$'

vodz ★★★★★ ()
Последнее исправление: vodz (всего исправлений: 1)
Ответ на: комментарий от Shulman

и заканчивающиеся на ‘.delta’ или ‘.dump.gz’.

#ls /incrimental/bis_kamin55_psql | grep -E "2020-12-02.*(.delta|.dump.gz)$"

Я думаю ты получил немного не тот результат, который ожидал.

$ ls /incrimental/bis_kamin55_psql | grep -E "2020-12-02.*(.delta|.dump.gz)$"

bis_kamin55_psql_daily_2020-12-02-dump_gz
bis_kamin55_psql_monthly_2020-12-02:dump+gz

surefire ★★★ ()
Ответ на: комментарий от vodz

Чем правильнее? Если совпадений подстроки в строке несколько и выбрано не спец. условие или не выдача только точного совпадения, греп выведет строку с совпадением только один раз. Не пытайся умничать попусту.

anonymous ()
Ответ на: комментарий от anonymous

греп выведет строку с совпадением только один раз

Мальчик, ТС берет вывод ls-а, который даёт по одному файлу на строку, а не то что он рисует на консоли(!) в столбик.

Не пытайся умничать попусту.

Вот потому ты и не регишься, что боишься собрать на аккаунт весь свой обсёр.

vodz ★★★★★ ()