найти шаблон, получаемый из файла в каталоге с файлами - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть первый файл с 3 строками:

test1  
test2  
test3

Я использую grep cmd для поиска каждой строки в каталоге с 10 файлами:

grep -Ril "test2"

результат:

/ usr / src / files / rog.txt

мне нужен grep для удаления 5 строк изконечный файл, 2 строки до и 2 после test2

, пожалуйста, помогите мне для хорошего использования grep.

1 Ответ

0 голосов
/ 15 февраля 2019

Есть один способ использовать опции -A и -B команды grep.Но чтобы его использовать, нужно выполнить два шага.Сначала вы выбираете все совпадения с предыдущей и следующей строкой и с этим списком, но это будет иметь некоторые побочные эффекты (которые в вашем приложении, вероятно, приемлемы).

Для этого вы вводите следующие команды: grep -A 2 -B 2 "test2" file1.txt > negative.txt grep -v -f negative.txt file1.txt

В первой строке выводятся все результаты теста test2 в файле file1.txt, сопровождаемые двумя предыдущими и двумя последующими строками каждой найденной строки.Если я правильно понял ваш вопрос, это «негатив» тех строк, которые вы хотите.Во второй строке теперь перечислены все строки из file1.txt, которые не соответствуют «отрицательной строке».Это должно быть близко к тому, что вам нужно.Есть только один побочный эффект, который вы должны знать.Если file1.txt содержит повторяющиеся строки, например:

test1 test2 test3 test4 ... test11 test12 test3 test4

Приведенный выше код также отфильтровывает две последние строки, даже если рядом нет строки «test2», поскольку ониДубликаты строк 3 и 4, которые были записаны в "absolute.txt" из-за строки 2. Но если вы обрабатываете списки файлов, вероятно, дубликаты не проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...