Как удалить все теги HTML с помощью sed?

Я нашел действительно отличный учебник, объясняющий некоторые практические примеры sed .

Последний (номер 10) можно увидеть ниже:

 $ sed -e 's/<[^>]*>//g' This <b> is </b> an <i>example</i>. This is an example. 

Может кто-нибудь, пожалуйста, помогите мне в этом?

Подводя итог, где я нахожусь: 1. Я понимаю: s/x/y/g – команда, сообщающая sed, чтобы «глобально подставить регулярное выражение x с регулярным выражением y 2. Кажется, что флаг -e помещает sed в какой-то «интерактивный режим», со страницы руководства:

 -e command Append the editing commands specified by the command argument to the list of commands. 

Это кажется мне непонятным, потому что похоже, что мы даем sed «список команд», похоже, мы даем ему «список аргументов», поэтому я не уверен в этом. 3. Я понимаю, что первое и единственное < это не что иное, как однократное регулярное выражение < , а последнее > – не что иное, как одиночное регулярное выражение > 4. Я понимаю, что * сообщает sed, чтобы он соответствовал 0 или более встречам узор перед ним, который в этом случае находится внутри скобок; однако, здесь я действительно запутался: может кто-то, пожалуйста, распакуйте [^>]* больше для меня?

поэтому, где я действительно запутался, это:

  • что происходит с -e в простом английском?
  • что происходит с [^>]* ?

Благодаря 🙂

  • Изменение пары ключей значений массива с использованием sed или замены шаблонов или расширения фигурных скобок?
  • Запись команды команды в файл без использования перенаправления
  • Имитировать команду sed read с awk
  • Добавление строки текста в несколько файлов
  • Добавление значения ко всем столбцам
  • Заменяйте каждую вкладку ТОЛЬКО в начале каждой строки пробелами
  • Разбор csv с sed и perl одним слоем?
  • Regex ищет корни слова с общими префиксами
  • 2 Solutions collect form web for “Как удалить все теги HTML с помощью sed?”

    Последовательность s/<[^>]*>//g является командой механизма обработки sed ; он сообщает, чтобы он выполнял «Поиск и замена». Итак -e 's/..../g' означает «добавить этот поиск и заменить команду на выполнение sed .

    Это может иметь большее значение, если мы выполняем несколько команд в одной команде:

     sed -e '1d' -e '$d' 

    добавит две команды в обработку sed ; «удалить первую строку» и «удалить последнюю строку».

    [^>] Является регулярным выражением, которое означает «любой символ, кроме >

    Таким образом, [^>]* означает «ноль или более любого символа, кроме >

    И поэтому <[^>]*> означает a < , необязательно сопровождаемый non > , а затем > .

    И затем мы помещаем это в команду «поиск и замена», где эта последовательность заменяется ничем, а затем выполняйте ее несколько раз в строке (окончательный g ).

    Это означает, что строка hello <abc> there <def> будет сначала соответствовать <abc> ( < , затем abc соответствует «ноль или больше не > », затем > ) и заменить это ничем, а затем повторить это для <def> . В результате получится hello there .

    (Обратите внимание на дополнительные пробелы, потому что мы не удаляем их!)

    Ограничение сферы действия двумя пунктами:

    • -e сообщает sed что после команды редактирования

    • [^>]* – это шаблон, который соответствует символам с нулем или более, которые могут быть «чем угодно», кроме символа >

    и команда редактирования говорит

     's/<[^>]*>//g' 

    измените все, что соответствует < , за которым следует любое количество символов до первого > ни к чему . И делайте это столько раз, сколько есть совпадений.

    Linux и Unix - лучшая ОС в мире.