LINUX.ORG.RU

bash. удаление строк из файла по шаблону.


0

1

всем привет.

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

благодарен.

★★★

Если я правильно понял что требуется, то примерно так:
grep -v «pattern» source.txt > out.txt

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

нее, рыбята.. предполагалось, что есть какая-то утилита которая понимает файловые шаблоны.

т.е. чтоб вырезалась строка целиком, если содержимое в ней имя файла соответствует шаблону.

или такой нет?

niXman ★★★
() автор топика
Ответ на: комментарий от schizoid

в файле есть такая строка: /path/to/some/file.h

я хочу эту строку удалить. выполняю : grep -v «*.h» src.txt > dst.txt

но строка выводится в целевой файл.

niXman ★★★
() автор топика
Ответ на: комментарий от uzbl

спасибо. так работает.

а не подскажите, каким образом grep`у можно указать список шаблонов? т.е. как разделять? в общем Вы поняли)

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

Ещё раз повторяю: у тебя неправильный регэксп.

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

вот. понял.

вопрос закрыт.

благодарен.

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

Можно разделять регэкспы |, это будет OR; можно записать их в файл по одному на строку и вызывать grep -f patterns.txt file.txt.

В общем, man grep и man 7 regex.

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

позвольте еще такой вопрос.. список шаблонов игнорирования у меня в виде: «*.zip;*.h;*-suffix.7z». скажите, есть способ заставить grep использовать такую запись в качестве списка игнорирования? или придется этот список сначала обработать до нужного вида?

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

Делай действия по очереди. Будет меньше ошибок.

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

Придётся обработать, например так:

echo "*.zip;*.h;*-suffix.7z" |sed -r 's/;/|/g;s/\./\\./g;s/\*//g;s/^/(/;s/$/)$/'
(\.zip|\.h|-suffix\.7z)$
На выходе — валидный регеэксп для grep -E

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

спасибо огромное! работает как надо. я вообще регекспы с трудом разбираю, так что такой сварганить бы не смог.

вопрос закрыт.

niXman ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.