The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"sed удалить диапазон текста"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на рабочей станции (Офис и текст / Linux)
Изначальное сообщение [ Отслеживать ]

"sed удалить диапазон текста"  –1 +/
Сообщение от SemGromoff on 31-Авг-15, 19:57 
есть html файл вида

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

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

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

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


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

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

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

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

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "sed удалить диапазон текста"  +/
Сообщение от Max Sh on 01-Сен-15, 13:38 
> очевидно что просишь, то и делает.

Культура так и прёт.

Последний пример
http://najomi.org/_nix/sed

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

6. "sed удалить диапазон текста"  +/
Сообщение от pavlinux (ok) on 02-Сен-15, 03:43 
> как сделать правильно?

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

оно же grep

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

7. "sed удалить диапазон текста"  +/
Сообщение от SemGromoff on 02-Сен-15, 11:20 
>> как сделать правильно?
> 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 в линуксе никак. хочу на будущее сделать скрипт, поскольку таких файлов много и включать каждый раз виртуалку неудобно.

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "sed удалить диапазон текста"  +/
Сообщение от Andrey Mitrofanov on 02-Сен-15, 12:24 
>[оверквотинг удален]
>> оно же 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 в линуксе никак. хочу на будущее сделать скрипт, поскольку
> таких файлов много и включать каждый раз виртуалку неудобно.

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "sed удалить диапазон текста"  +/
Сообщение от Andrey Mitrofanov on 02-Сен-15, 12:36 
> |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/// лишний

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "sed удалить диапазон текста"  +/
Сообщение от pavlinux (ok) on 02-Сен-15, 16:40 
>>> как сделать правильно?
>> 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>

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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