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

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

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

  • Заменить шаблон в файле с содержимым другого файла
  • строки в столбцы с awk
  • Извлечь абзац, разделенный на *** с помощью AWK
  • Используйте sed, чтобы найти и заменить строку в нескольких файлах
  • Удалить строки до заголовка с помощью sed
  • Найти файлы, содержащие набор слов
  •  $ 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 или awk
  • Использование AWK добавляет новую строку, если существует совпадение
  • извлечь последнее совпадение из файла журнала до конца
  • Вставка текста между двумя шаблонами
  • Как умножить и суммировать данные столбца с помощью awk и / sed?
  • 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 - лучшая ОС в мире.