каждый второй ответ предполагает, что 1 строка до и 3 после фактически означает абзацы:
$ perl -00 -ne 'print if !/\Wrye\W/i' input.txt
https://link3.com
8iqiwudhuiqhwdqwuidhuiqhwi SOMETHING ELSE iqwdihqwuidhuiqwhduihqwi
https://link3.com/image.jpg
$42.99
-00
включает режим абзаца -n
не печатается записи по умолчанию 'print if !/\Wrye\W/i
- печатает абзац, если он не совпадает с
, однако, если буквально 1 строку до и 3 следует понимать буквально:
$ perl -0777 -pe 's/.*\n.*\Wrye\W.*\n(.*\n){3}//ig' input.txt
https://link3.com
8iqiwudhuiqhwdqwuidhuiqhwi SOMETHING ELSE iqwdihqwuidhuiqwhduihqwi
https://link3.com/image.jpg
$42.99
-0777
прочитать весь файл -p
print .*\n
- сопоставить строку, включая конец строки (обратите внимание, что без /s
.
не соответствует \n
)
Примечание: кто-то поднял проблему совместимости с dos в комментарии. "." соответствует любому символу, кроме новой строки, которая включает в себя \r
, таким образом, .*\n
охватывает также окончания строки DOS.