Grep текстовый файл с (находят сгенерированными) файлами, но игнорируют пути

Я получаю огромный текстовый файл, сгенерированный с находкой.

Содержание сгенерированного текстового файла является файлом-referenes с полным путем, т.е.:

//server/dir1/dir1foobar.ext
//server/dir1/dir2/dir1bar.ext
//server/dir1/dir2/dir1.ext
//server/dir3/dir4/dir4.ext
//server/dir5/dir6/dir7/dir1foo.ext
//server/dir1/dir2/dir3/dir2.ext
//server/dir3/dir4/dir5/dir6/dir3.ext

(имена файлов и пути довольно случайны, таким образом, я не могу всегда запускать в положении n с начала или конца строки),

Я должен grep этот текстовый файл для определенного шаблона, запишите результаты (который должен быть полной строкой для соответствия) в новое (отсортированный с sort) файл, но также и потребность проигнорировать любое соответствие, которое не является именем файла.

Так, с моими строками в качестве примера выше, у меня есть шаблон поиска "dir1", и результатом должен быть новый файл, содержащий те строки:

//server/dir1/dir1foobar.ext
//server/dir1/dir2/dir1bar.ext
//server/dir1/dir2/dir1.ext
//server/dir5/dir6/dir7/dir1foo.ext

Мои попытки с sort -f -u $textfile | grep -i $pattern > $newfile не были успешны, потому что grep имеет соответствие также, когда каталог содержит шаблон, который приведет к "ложному" соответствию для //server/dir1/dir2/dir3/dir2.ext.

Я читал в grep руководство, что regex возможен с опцией -G но could'nt играют любой путь к grep только в части имен файлов строки.

0
задан 9 May 2015 в 21:10
1 ответ

Попробуйте использовать grep следующим образом:

grep -i 'dir1[^/]*$'

Это означает, что совпадение будет приниматься только в том случае, если оно соответствует dir1 , и за этим совпадением не следует никакое / до конца строки.

2
ответ дан 4 December 2019 в 13:50

Теги

Похожие вопросы