Есть один способ использовать опции -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. Но если вы обрабатываете списки файлов, вероятно, дубликаты не проблема.