Я хочу использовать awk, чтобы вырезать длинный текст, который я нашел на нужном мне веб-сайте. Я сохраню txt от части текста, которая начинается с xxx, до части, которая заканчивается на xxx в файле

-1
Fahrimert Dincer 6 Окт 2021 в 22:49
Привет, добро пожаловать в unix.SE. Пожалуйста, предоставьте пример текста, который вы хотите отфильтровать. Использование sed и awk очень специфично для текущей работы. unix.stackexchange.com/help/how-to-ask
 – 
polemon
6 Окт 2021 в 23:09
Также было бы полезно показать, что вы пробовали, и объяснить, почему это не сработало так, как ожидалось или предполагалось.
 – 
DopeGhoti
6 Окт 2021 в 23:24
Пожалуйста, поясните вашу конкретную проблему или предоставьте дополнительные сведения, чтобы выделить именно то, что вам нужно. В настоящее время трудно сказать, о чем вы спрашиваете.
 – 
Community
7 Окт 2021 в 04:29

1 ответ

Хотя ваш вопрос крайне расплывчатый и в нем отсутствует четкий пример ввода, AWK может помочь нам найти обобщенное решение на основе нескольких указанных вами деталей.

Следующий код должен работать, если в вашем тексте есть до двух экземпляров xxx и даже если в нем нет разрывов строк. Awk — это линейно-ориентированный язык, и поэтому нам приходится работать с строками, оцениваемыми отдельно. Использование других методов, таких как sed, может лучше подойти для этой работы с использованием выражения регулярного выражения.

BEGIN{printer="false"}
printer=="true" && $0 !~ /xxx/ {print $0}
printer=="false" && $0 ~ /xxx/  {printer="true"; split($0,a,"xxx"); print a[2]; next}
printer=="true" && $0 ~ /xxx/ {split($0,b,"xxx"); print b[1]; printer="false"; exit}

Тест а:

xxxLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco
laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
reprehenderit in voluptate velit esse cillum dolore
eu fugiat nulla pariatur.xxx Excepteur sint occaecat cupidatat non
proident, sunt in
culpa qui officia deserunt mollit anim id est laborum.

Тест б:

xxxLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.xxx Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
1
juanmonroynieto 6 Окт 2021 в 23:49
Не стесняйтесь изменять свой вопрос, чтобы другие, которые хотят ответить, увидели его. Пример должен легко распространяться на ваш вариант использования.
 – 
juanmonroynieto
6 Окт 2021 в 23:57