Извлеките содержимое из файла между двумя шаблонами соответствия (Извлеките только HTML из файла)

Это случилось со мной тоже, я решил это, понизив прошивку BIOS, теперь отлично работает. Перейдите на страницу поддержки вашей модели и попробуйте несколько прошивок, посмотрите, исправляют ли они проблему.

2
задан 1 November 2017 в 00:57

3 ответа

Мы можем достичь этой цели с помощью инструмента sed - редактора потока для фильтрации и преобразования текста. Короткий ответ дается в пункте 5 ниже. Но я решил написать подробное объяснение.

sed Сначала давайте создадим простой файл для проверки наших команд:

$ printf '\nTop text\nSender <example@email.com>\n\n<html>\n\tThe inner text 1\n</html>\n\nMiddle text\n\n<HTML>\n\tThe inner text 2\n</HTML>\n\nBottom text\n' | tee example.file

Top text
Sender <example@email.com>

<html>
        The inner text 1
</html>

Middle text

<HTML>
        The inner text 2
</HTML>

Bottom text

1 , Мы можем обрезать все между тегами <html> и </html>, включая их, следующим образом:

$ sed -n -e '/<html>/,/<\/html>/p' example.file

<html>
        The inner text 1
</html>
Опция -e script (--expression=script) добавляет скрипт к командам, которые должны быть казнены. В этом случае добавленный скрипт '/<html>/,/<\/html>/p'. Хотя у нас есть только один скрипт, мы можем опустить этот вариант. Опция -n (--quiet, --silent) подавляет автоматическую печать пространства шаблонов, и вместе с этим вариантом мы должны использовать некоторые дополнительные команды, чтобы сообщить sed, что печатать. Эта дополнительная команда - команда печати p, добавленная в конец скрипта. Если sed не был запущен с опцией -n, команда p будет дублировать вход. Наконец, по двум разделенным запятой паттернам - /<html>/,/<\/html>/ - мы можем указать диапазон. Обратите внимание, что мы используем \, чтобы избежать специального символа /, который здесь играет роль разделителя.

1. Если мы хотим обрезать все между тегами <html> и </html>, не печатая их, мы должны добавить несколько дополнительных команд:

$ sed -n '/<html>/,/<\/html>/{ /html>/d; p }' example.file

        The inner text 1
Параметр -e script (--expression=script) добавляет скрипт к командам, которые будут выполнены. В этом случае добавленный скрипт '/<html>/,/<\/html>/p'. Хотя у нас есть только один скрипт, мы можем опустить эту опцию.

Опция -e script (--expression=script) добавляет скрипт к командам, которые будут выполнены. В этом случае добавленный скрипт '/<html>/,/<\/html>/p'.

Команда d удалит каждую строку, которая смещается в выражение html>.

$ sed -n '/<html>/I,/<\/html>/I{ /html>/Id; p }' example.file

        The inner text 1
        The inner text 2
]

Параметр -e script (--expression=script) добавляет скрипт к командам, которые будут выполнены. В этом случае добавленный скрипт '/<html>/,/<\/html>/p'. Хотя у нас есть только один скрипт, мы можем опустить эту опцию.

3. Но наш example.file имеет также теги верхнего регистра <HTML>. Поэтому мы должны сделать регистр соответствия шаблону нечувствительным. Для этого мы добавили флаг /I в регулярные выражения:

sed -n '/<html>/I,/<\/html>/I{ /html>/Id; s/<[^>]*>//g; p }' example.file
Команда s заменит строки, которые mach выражают в выражение /<[^>]*>/ пустой строкой // - s/<old>/<new>/. Опция -n (--quiet, --silent) подавляет автоматическую печать пространства шаблонов, и вместе с этим вариантом мы должны использовать некоторые дополнительные команды, чтобы сообщить sed, что печатать.

4. Если мы хотим удалить все теги HTML между тегами <html>, мы могли бы добавить дополнительную команду, которая будет анализировать и «удалять» строки, начинающиеся с < и заканчивающиеся на >:

sed -n '/<html>/I,/<\/html>/I{ s/<[^>]*>//g; p }' example.file

Возможно, мы хотели бы опустить команду delete в этом случае:

sed -n '/<html>/I,/<\/html>/I p' example.file -i.bak
sed -n '/<html>/I,/<\/html>/I p' example.file > new.file

3. Чтобы внести изменения вместо файла и создания резервной копии мы можем использовать опцию -i, или мы можем создать новый файл на основе вывода sed, перенаправив > вывод в новый файл:

Команда s заменит строки, которые обрабатываются выражением /<[^>]*>/, с пустой строкой // - s/<old>/<new>/. Как выбрать строки между двумя шаблонами маркеров, которые может происходить несколько раз с awk / sed Эта дополнительная команда - команда печати p, добавленная в конец скрипта. Если sed не был запущен с опцией -n, команда p будет дублировать вход. Sed удаляет теги из html-файла
0
ответ дан 22 May 2018 в 17:48

Мы можем достичь этой цели с помощью инструмента sed - редактора потока для фильтрации и преобразования текста. Короткий ответ дается в пункте 5 ниже. Но я решил написать подробное объяснение.

sed Сначала давайте создадим простой файл для проверки наших команд:

$ printf '\nTop text\nSender <example@email.com>\n\n<html>\n\tThe inner text 1\n</html>\n\nMiddle text\n\n<HTML>\n\tThe inner text 2\n</HTML>\n\nBottom text\n' | tee example.file Top text Sender <example@email.com> <html> The inner text 1 </html> Middle text <HTML> The inner text 2 </HTML> Bottom text

1 , Мы можем обрезать все между тегами <html> и </html>, включая их, следующим образом:

$ sed -n -e '/<html>/,/<\/html>/p' example.file <html> The inner text 1 </html> Опция -e script (--expression=script) добавляет скрипт к командам, которые должны быть казнены. В этом случае добавленный скрипт '/<html>/,/<\/html>/p'. Хотя у нас есть только один скрипт, мы можем опустить этот вариант. Опция -n (--quiet, --silent) подавляет автоматическую печать пространства шаблонов, и вместе с этим вариантом мы должны использовать некоторые дополнительные команды, чтобы сообщить sed, что печатать. Эта дополнительная команда - команда печати p, добавленная в конец скрипта. Если sed не был запущен с опцией -n, команда p будет дублировать вход. Наконец, по двум разделенным запятой паттернам - /<html>/,/<\/html>/ - мы можем указать диапазон. Обратите внимание, что мы используем \, чтобы избежать специального символа /, который здесь играет роль разделителя.

1. Если мы хотим обрезать все между тегами <html> и </html>, не печатая их, мы должны добавить несколько дополнительных команд:

$ sed -n '/<html>/,/<\/html>/{ /html>/d; p }' example.file The inner text 1 Параметр -e script (--expression=script) добавляет скрипт к командам, которые будут выполнены. В этом случае добавленный скрипт '/<html>/,/<\/html>/p'. Хотя у нас есть только один скрипт, мы можем опустить эту опцию.

Опция -e script (--expression=script) добавляет скрипт к командам, которые будут выполнены. В этом случае добавленный скрипт '/<html>/,/<\/html>/p'.

Команда d удалит каждую строку, которая смещается в выражение html>.

$ sed -n '/<html>/I,/<\/html>/I{ /html>/Id; p }' example.file The inner text 1 The inner text 2 ]

Параметр -e script (--expression=script) добавляет скрипт к командам, которые будут выполнены. В этом случае добавленный скрипт '/<html>/,/<\/html>/p'. Хотя у нас есть только один скрипт, мы можем опустить эту опцию.

3. Но наш example.file имеет также теги верхнего регистра <HTML>. Поэтому мы должны сделать регистр соответствия шаблону нечувствительным. Для этого мы добавили флаг /I в регулярные выражения:

sed -n '/<html>/I,/<\/html>/I{ /html>/Id; s/<[^>]*>//g; p }' example.file Команда s заменит строки, которые mach выражают в выражение /<[^>]*>/ пустой строкой // - s/<old>/<new>/. Опция -n (--quiet, --silent) подавляет автоматическую печать пространства шаблонов, и вместе с этим вариантом мы должны использовать некоторые дополнительные команды, чтобы сообщить sed, что печатать.

4. Если мы хотим удалить все теги HTML между тегами <html>, мы могли бы добавить дополнительную команду, которая будет анализировать и «удалять» строки, начинающиеся с < и заканчивающиеся на >:

sed -n '/<html>/I,/<\/html>/I{ s/<[^>]*>//g; p }' example.file

Возможно, мы хотели бы опустить команду delete в этом случае:

sed -n '/<html>/I,/<\/html>/I p' example.file -i.bak sed -n '/<html>/I,/<\/html>/I p' example.file > new.file

3. Чтобы внести изменения вместо файла и создания резервной копии мы можем использовать опцию -i, или мы можем создать новый файл на основе вывода sed, перенаправив > вывод в новый файл:

Команда s заменит строки, которые обрабатываются выражением /<[^>]*>/, с пустой строкой // - s/<old>/<new>/. Как выбрать строки между двумя шаблонами маркеров, которые может происходить несколько раз с awk / sed Эта дополнительная команда - команда печати p, добавленная в конец скрипта. Если sed не был запущен с опцией -n, команда p будет дублировать вход. Sed удаляет теги из html-файла
1
ответ дан 18 July 2018 в 05:41

Мы можем достичь этой цели с помощью инструмента sed - редактора потока для фильтрации и преобразования текста. Короткий ответ дается в пункте 5 ниже. Но я решил написать подробное объяснение.

sed Сначала давайте создадим простой файл для проверки наших команд:

$ printf '\nTop text\nSender <example@email.com>\n\n<html>\n\tThe inner text 1\n</html>\n\nMiddle text\n\n<HTML>\n\tThe inner text 2\n</HTML>\n\nBottom text\n' | tee example.file Top text Sender <example@email.com> <html> The inner text 1 </html> Middle text <HTML> The inner text 2 </HTML> Bottom text

1 , Мы можем обрезать все между тегами <html> и </html>, включая их, следующим образом:

$ sed -n -e '/<html>/,/<\/html>/p' example.file <html> The inner text 1 </html> Опция -e script (--expression=script) добавляет скрипт к командам, которые должны быть казнены. В этом случае добавленный скрипт '/<html>/,/<\/html>/p'. Хотя у нас есть только один скрипт, мы можем опустить этот вариант. Опция -n (--quiet, --silent) подавляет автоматическую печать пространства шаблонов, и вместе с этим вариантом мы должны использовать некоторые дополнительные команды, чтобы сообщить sed, что печатать. Эта дополнительная команда - команда печати p, добавленная в конец скрипта. Если sed не был запущен с опцией -n, команда p будет дублировать вход. Наконец, по двум разделенным запятой паттернам - /<html>/,/<\/html>/ - мы можем указать диапазон. Обратите внимание, что мы используем \, чтобы избежать специального символа /, который здесь играет роль разделителя.

1. Если мы хотим обрезать все между тегами <html> и </html>, не печатая их, мы должны добавить несколько дополнительных команд:

$ sed -n '/<html>/,/<\/html>/{ /html>/d; p }' example.file The inner text 1 Параметр -e script (--expression=script) добавляет скрипт к командам, которые будут выполнены. В этом случае добавленный скрипт '/<html>/,/<\/html>/p'. Хотя у нас есть только один скрипт, мы можем опустить эту опцию.

Опция -e script (--expression=script) добавляет скрипт к командам, которые будут выполнены. В этом случае добавленный скрипт '/<html>/,/<\/html>/p'.

Команда d удалит каждую строку, которая смещается в выражение html>.

$ sed -n '/<html>/I,/<\/html>/I{ /html>/Id; p }' example.file The inner text 1 The inner text 2 ]

Параметр -e script (--expression=script) добавляет скрипт к командам, которые будут выполнены. В этом случае добавленный скрипт '/<html>/,/<\/html>/p'. Хотя у нас есть только один скрипт, мы можем опустить эту опцию.

3. Но наш example.file имеет также теги верхнего регистра <HTML>. Поэтому мы должны сделать регистр соответствия шаблону нечувствительным. Для этого мы добавили флаг /I в регулярные выражения:

sed -n '/<html>/I,/<\/html>/I{ /html>/Id; s/<[^>]*>//g; p }' example.file Команда s заменит строки, которые mach выражают в выражение /<[^>]*>/ пустой строкой // - s/<old>/<new>/. Опция -n (--quiet, --silent) подавляет автоматическую печать пространства шаблонов, и вместе с этим вариантом мы должны использовать некоторые дополнительные команды, чтобы сообщить sed, что печатать.

4. Если мы хотим удалить все теги HTML между тегами <html>, мы могли бы добавить дополнительную команду, которая будет анализировать и «удалять» строки, начинающиеся с < и заканчивающиеся на >:

sed -n '/<html>/I,/<\/html>/I{ s/<[^>]*>//g; p }' example.file

Возможно, мы хотели бы опустить команду delete в этом случае:

sed -n '/<html>/I,/<\/html>/I p' example.file -i.bak sed -n '/<html>/I,/<\/html>/I p' example.file > new.file

3. Чтобы внести изменения вместо файла и создания резервной копии мы можем использовать опцию -i, или мы можем создать новый файл на основе вывода sed, перенаправив > вывод в новый файл:

Команда s заменит строки, которые обрабатываются выражением /<[^>]*>/, с пустой строкой // - s/<old>/<new>/. Как выбрать строки между двумя шаблонами маркеров, которые может происходить несколько раз с awk / sed Эта дополнительная команда - команда печати p, добавленная в конец скрипта. Если sed не был запущен с опцией -n, команда p будет дублировать вход. Sed удаляет теги из html-файла
1
ответ дан 24 July 2018 в 18:24

Другие вопросы по тегам:

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