Почему удаленный доступ к файлу через веб-страницу работает с Apache 2.2, но не с 2.4, несмотря на то, что я обновил файлы, необходимые для версии 2.4?

Проблема OP была вызвана файловым файлом, использующимCR(\r/ ascii 13 )вместоLF(\n/ ascii 10 )в качестве разделителей строк, как ожидалось sed. Использование CRбыло соглашением, используемым в классической MacOS; как пользователь, не являющийся пользователем Mac, единственное его использование, с которым я встречался в дикой природе за последние два десятилетия, было в файлах PDF,где это сильно усложняет любой наивный синтаксический анализатор PDF, написанный вperl(в отличие от RSв mawkи gawk, $/в perlне может быть регулярным выражением ).


Что касается вопроса из заголовка, да, awkподдерживает шаблоны диапазонов, и вы можете свободно смешивать в них регулярные выражения и предикаты номеров строк (или любое выражение ). Например:

NR==1,/rex/   # all lines from the 1rst up to (and including)
          # the one matching /rex/

/rex/,0   # from the line matching /rex/ up to the end-of-file.
Диапазоны

awkотличаются от диапазонов sed, потому что в awkконечный предикат также может соответствовать строке, с которой начинается диапазон. Поведение sedможно эмулировать с помощью:

s=/start/, !s && /last/ { s = 0; print }

Однако диапазоны в awkпо-прежнему довольно ограничены, поскольку они не являются реальным выражением (, их нельзя инвертировать, сделать частью других выражений, использовать в if(...)и т. д. ). Кроме того, нет никакой магии :, если вы хотите выразить что-то вроде диапазона с «контекстом» (, например./start/-4,/end/+4)вам придется свернуть собственный кольцевой буфер и дополнительную логику.

0
25.10.2020, 00:16
0 ответов

Теги

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