Выберите текст между двумя шаблонами с помощью awk или sed

Во-первых, никакая оптимизация и кэширование не могут заменить физическое оборудование. Лучшая форма оптимизации — добавить больше памяти на ваш сервер, а затем выполнить шаги по оптимизации.

Оптимизация MySQL — это непрерывная процедура. Вы должны проводить оптимизацию MySQL каждую неделю. Это позволит вам настроить конфигурацию MySQL.

Пять лет назад, когда был задан этот вопрос, мы были на Trusty Tahr, который я помню больше всего, и с ним был файл my.cnf, который можно было отредактировать, перемотать вперед в Xenial, если открыть /etc/mysqlнет файла my.cnfдля редактирования. Сейчас это ссылка на/etc/alternatives/my.cnf

Файл, который вы хотите отредактировать с помощью Xenial (Ubuntu 16 ), находится в другом каталоге, и это /etc/mysql/mysql.conf.d. Файл, который вы будете редактировать для тех, кто просматривает этот пост, который я сейчас ускорю, называется mysqld.cnf.

Создайте резервную копию вашего файла, затем вернитесь в свой домашний каталог и используйте mysqlcheckдля оптимизации ваших баз данных.

0
21.02.2020, 18:49
3 ответа

Это, с GNU sed, каким бы уродливым оно ни было, я думаю, делает свое дело:

sed -e 's/PAT1/\nPAT1\n/' -e 's/PAT2/\nPAT2\n/' file | sed -n '/PAT1/,/PAT2/{//!p}'

Возьмите PAT1 и PAT2 и добавьте новые строки в начале и в конце:

sed -e 's/PAT1/\nPAT1\n/' -e 's/PAT2/\nPAT2\n/'

Blalala
'Omfoem From 
balanf 
PAT1
 This is the
text that I want
to get 
PAT2
: apples

Печатать текст между PAT1 и PAT2:

sed -n '/PAT1/,/PAT2/{//!p}'

 This is the
text that I want
to get 
0
28.04.2021, 23:22

Вариант GNU *awk, просто сделайте PAT2разделителем записей RS, PAT1разделителем полей FSи напечатайте последнее поле NF, убедившись, что вывод не является результатом повторениеRS

awk 'BEGIN{RS="PAT2"; FS="PAT1"}NF>1{print $NF}' file1
 This is the
text that I want
to get 

 This is another text that I want
to get DONE

*Отмечено @EdMorton

2
28.04.2021, 23:22

С любым awk в любой оболочке на каждой машине UNIX:

$ awk 'sub(/.*PAT1 */,""){f=1} f{if ( sub(/ *PAT2.*/,"") ) f=0; print}' file
This is the
text that I want
to get

Вышеупомянутое работает для предоставленного вами образца ввода, если у вас есть другой ввод в другом формате, для которого это не работает (, например. вложенные начальные/конечные строки или начальная строка после конечной строки в той же строке ), то, пожалуйста, отредактируйте свой вопрос, чтобы показать это.

0
28.04.2021, 23:22

Теги

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