The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
sed удалить диапазон текста, !*! SemGromoff, 31-Авг-15, 19:57  [смотреть все]
есть html файл вида

blabla
</div><table class=
blablabla
</table>
blablabla

мне нужно удалить текст от начала и до тега </div><table class= и после тега </table>
сами теги не нужно удалять,
но поскольку весь файл представляет собой одну строку :(,то конструкция вида
sed '1,/<\/div><table/d; /<\/table>/,$d '
удаляет всё содержимое файла

как сделать правильно?

  • sed удалить диапазон текста, !*! Pahanivo, 12:14 , 01-Сен-15 (1)
    > есть html файл вида
    > blabla
    > </div><table class=
    > blablabla
    > </table>
    > blablabla
    > мне нужно удалить текст от начала и до тега </div><table class= и

    от начала чего?
    в файле нет открывающих тегов?
    > после тега </table>
    > сами теги не нужно удалять,
    > но поскольку весь файл представляет собой одну строку :(,то конструкция вида

    любой файл по сути представляет собой одну большую "строку"
    > sed '1,/<\/div><table/d; /<\/table>/,$d '
    > удаляет всё содержимое файла

    очевидно что просишь, то и делает.

    > как сделать правильно?

  • sed удалить диапазон текста, !*! pavlinux, 03:43 , 02-Сен-15 (6)
    > как сделать правильно?

    1. sed -e '/table/!d'
    2. sed -e '/<\//!d'
    3. sed -e '/^</!d'

    оно же grep

    • sed удалить диапазон текста, !*! SemGromoff, 11:20 , 02-Сен-15 (7)
      >> как сделать правильно?
      > 1. sed -e '/table/!d'
      > 2. sed -e '/<\//!d'
      > 3. sed -e '/^</!d'
      > оно же grep

      что-то у меня ничего толком не получилось вашим способом

      вот пример, текстовый файл в одну строчку
      blablablabla </div><table class="11"><tr><th class="num"></tr>blablablabla</div>blablablabla</div></div></form></td><td class="RightPanel"><div class="IndexTest"><h2>blablablablablablablabla<a href="/test/">тест</a></h2>blablablablablablablablablablablabla</table> blablablablablablablablablabla blablablablablablablablablablablablablabla

      от него должно остаться только
      </div><table class="11"><tr><th class="num"> </tr>blabla blabla</div>blablablabla </div></div></form></td>< td class="RightPanel"><div class="IndexTest"><h2>blablablabla blablablabla<a href="/test/">тест</a></h2>blablablablablablablablablablablabla</table>

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

      • sed удалить диапазон текста, !*! Andrey Mitrofanov, 12:24 , 02-Сен-15 (8)
        >[оверквотинг удален]
        >> оно же grep
        > что-то у меня ничего толком не получилось вашим способом
        > вот пример, текстовый файл в одну строчку
        > blablablabla </div><table class="11"><tr><th class="num"></tr>blablablabla</div>blablablabla</div></div></form></td><td
        > class="RightPanel"><div class="IndexTest"><h2>blablablablablablablabla<a href="/test/">тест</a></h2>blablablablablablablablablablablabla</table>
        > blablablablablablablablablabla blablablablablablablablablablablablablabla
        > от него должно остаться только
        > </div><table class="11"><tr><th class="num"> </tr>blabla blabla</div>blablablabla
        > </div></div></form></td>< td class="RightPanel"><div class="IndexTest"><h2>blablablabla
        > blablablabla<a href="/test/">тест</a></h2>blablablablablablablablablablablabla</table>

        |sed -n 's|</div><table class=|\n&|g;H;${g;s/^\n//;s/^[^\n]*\n//;s/\n//g;p}'

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

        • sed удалить диапазон текста, !*! Andrey Mitrofanov, 12:36 , 02-Сен-15 (9)
          > |sed -n 's|</div><table class=|\n&|g;H;${g;s/^\n//;s/^[^\n]*\n//;s/\n//g;p}'

          Поторопился избавиться-от/запостить этот ужос, забыл заметить:
            1/ у меня GNU sed и "\n" (и м.б. что-то ещё) может не работать в других реализациях
            2/ в исходных данных обещали не давать новых строк -- не проверял вход, и удалял из выхода
            3/ один s/// лишний

      • sed удалить диапазон текста, !*! pavlinux, 16:40 , 02-Сен-15 (10)
        >>> как сделать правильно?
        >> 1. sed -e '/table/!d'
        >> 2. sed -e '/<\//!d'
        >> 3. sed -e '/^</!d'
        >> оно же grep
        > что-то у меня ничего толком не получилось вашим способом
        > вот пример, текстовый файл в одну строчку

        В задании было


        > есть html файл вида
        > blabla
        > </div><table class=
        > blablabla
        > </table>
        > blablabla

        $ cat html | sed -e '/table/!d'
        </div><table class=
        </table>




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру