Вы могли бы использовать Perl
(получите содержимое файла и замена Pattern
с с Pattern
+ Содержание файла
):
perl -pe '$text=`cat insert.txt`; chomp($text); s/PAT/$&$text/' file.txt
Добавить -I
для редактирования на месте; G
Чтобы добавить после каждого происшествия PAT (шаблона), например:
perl -i -pe '$text=`cat insert.txt`; chomp($text); s/PAT/$&$text/g' file.txt
другой способ, используя ED
:
printf '%s\n' /PAT/s/PAT/\&\\ \/ - kb ". r insert.txt" j \'b j ,p q | ed -s file.txt
для редактирования на месте, заменить , p
с W
W :
printf '%s\n' /PAT/s/PAT/\&\\ \/ - kb ". r insert.txt" j \'b j w q | ed -s file.txt
, вероятно, никто не заинтересован, как это работает, но в любом случае, Printf
передает список команд ED
:
/PAT/s/PAT/&\ # set address to first line matching PAT and
/ # split the line right after PAT
- # set address one line before (return to the line matching PAT)
kb # mark the current line
. r insert.txt # insert content of insert.txt after this line
j # join current line and the next
'b # set address to marked line (return to the line matching PAT)
j # join current line and the next one
,p # print file content
q # quit editor
или , без использования printf
и :
:
ed -s file.txt <<< $'/PAT/s/PAT/&\\\n/\n-\nkb\n. r insert.txt\nj\n\'b\nj\nw\nq\n'
Сравнение старых и новых конфигураций по умолчанию подробно показало, что модуль CGID больше не был включен. После того, как он включил его, ошибка CGI страницы работают, как ожидалось снова. Я думаю, что любые другие страницы CGI тоже не работали, но я не использую их регулярно, поэтому я не заметил. Не уверены, если это изменение, связанное с Ubuntu или, если все установки Apache не поставляются с CGI с включенными сегодня.
Вот быстрое исправление:
a2enmod cgid
затем перезагрузите Apache.