Регулярное выражение для поиска html тега
Модератор: Модераторы разделов
-
Daeloce
- Сообщения: 62
- ОС: OpenSUSE 11.0 Ubuntu 9.04
Регулярное выражение для поиска html тега
Всем добрый вечер!
Стоит проблема для одной программы на shelle, необходимо найти открытые и закрытые теги. Насколько я понимаю, надо использовать регулярные выражения, но как что-то плохо представляю! Основная проблема в том, что есть два варианта:
<a href=....> в этом случае надо регулярное выражение, которое выдаст <a т.е. от "<" до "пробела". А возможен вариант, когда <br>, т.е. нужно выделить от "<" до ">" . И вот как это реализовать в shell скрипте не понимаю... Может кто подскажет?
Стоит проблема для одной программы на shelle, необходимо найти открытые и закрытые теги. Насколько я понимаю, надо использовать регулярные выражения, но как что-то плохо представляю! Основная проблема в том, что есть два варианта:
<a href=....> в этом случае надо регулярное выражение, которое выдаст <a т.е. от "<" до "пробела". А возможен вариант, когда <br>, т.е. нужно выделить от "<" до ">" . И вот как это реализовать в shell скрипте не понимаю... Может кто подскажет?
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Регулярное выражение для поиска html тега
Код: Выделить всё
sed -r 's/<([^>]+)>/Здесь был тег \1 но я его поменяла/' test.htmlпоменялА, потому что sed - командА
<([^>]+)> Значит:
сначала <
потом 1 или много символов, но только не >
потом >
ЗЫЖ
Это всё в книжке написано(Фридл Дж. - Регулярные выражения. (2003.2.изд)(S))
Хотя мне не очень понравилось - слишком хорошо разжёвано, и с уклоном в perl... Однако читать легче, чем info sed
-
Daeloce
- Сообщения: 62
- ОС: OpenSUSE 11.0 Ubuntu 9.04
Re: Регулярное выражение для поиска html тега
Спасибо большое!:)
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Регулярное выражение для поиска html тега
а если тэг занимает более одной строки?drBatty писал(а): ↑19.05.2009 20:54Код: Выделить всё
sed -r 's/<([^>]+)>/Здесь был тег \1 но я его поменяла/' test.html
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Регулярное выражение для поиска html тега
тогда наши действия существенно усложняются.
Код: Выделить всё
sed -r '
:l1
s/<\/tr>|<br(\s+/)?>/&/
tl2
N
bl1
:l2
s/\r?\n/ /g
s/<\/tr>|<br(\s+/)?>/&\n/g
'ну а дальше работаем с тегами... только проверить это надо...
-
svary
- Сообщения: 49
- ОС: Linux FC-9
Re: Регулярное выражение для поиска html тега
Вы не одиноки :-) Я тоже - не понимаю. Насколько мне известно, реализовать выделение HTML тегов с помощью регулярных выражений невозможно в принципе. Простейший пример :
Код: Выделить всё
<H1>Заголовок<B>выделение</h1>завершение</b>Поиск через регулярные выражения даст аж два HTML тега. Хотя, по правилам языка, здесь нет ни одного.
Характерно, что в разных браузерах такая конструкция приведет к разным результатам.
В последенем стандарте HTML (ИМХО) специально оговорена недопустимость такого текста.
-
klark
- Сообщения: 194
- ОС: Gentoo Linux
Re: Регулярное выражение для поиска html тега
Код: Выделить всё
sed -r 's/$/ /g' test.html | tr -d '\n' | sed -r 's/<([^>]+)>/Здесь был тег (((=\1=))) но я его убрал/g'Лечите катаракту у офтальмолога, а мне очки не втирайте!
-
Voice
- Сообщения: 1073
- Статус: столлманист
- ОС: Debian GNU/Linux
Re: Регулярное выражение для поиска html тега
svary писал(а): ↑20.05.2009 05:47Насколько мне известно, реализовать выделение HTML тегов с помощью регулярных выражений невозможно в принципе. Простейший пример :
Код: Выделить всё
<H1>Заголовок<B>выделение</h1>завершение</b>
Поиск через регулярные выражения даст аж два HTML тега. Хотя, по правилам языка, здесь нет ни одного.
По правилам это не валидный HTML, так что на такое нормальные люди не обращают внимание. Да и есть заглядывание вперед/назад, который спасет и от этого
"И может собственных Платонов и быстрых разумом Невтонов российская земля рождать."
М. В. Ломоносов
М. В. Ломоносов
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Регулярное выражение для поиска html тега
Вы сами написали что это запрещённая конструкция, и поведение браузеров непредсказуемо... Чем скрипт лучше?
ну да. А что? Мой браузер показывает
Заголовоквыделениезавершение
Код: Выделить всё
[u]Заголовок[b]выделение[/u]завершение[/b]Код: Выделить всё
<u>Заголовок<b>выделение</u>завершение</b>2 тега... А ваш? Видимо и регулярное выражение надо составлять таким образом, что-бы оно работало так-же...
klark писал(а): ↑20.05.2009 05:55Код: Выделить всё
sed -r 's/$/ /g' test.html | tr -d '\n' | sed -r 's/<([^>]+)>/Здесь был тег (((=\1=))) но я его убрал/g'
ага, спасибо. единственный недостаток - весь текст грузится в память. одной строкой.
-
Daeloce
- Сообщения: 62
- ОС: OpenSUSE 11.0 Ubuntu 9.04
Re: Регулярное выражение для поиска html тега
Всем спасибо разобрался и работает!:)
Можно еще вопрос?
Есть два файла. Допустим такие:
1 файл:
а
б
а
в
2 файл
б
б
г
а
Нужно удалить из файла одинаковые строки, причем если в первом файле строка "а" встречается 1 раз то из второго файла её надо удалить только один раз. Т.е после должно получиться:
1 файл:
а
в
2 файл:
б
г
Как это сделать?
Можно еще вопрос?
Есть два файла. Допустим такие:
1 файл:
а
б
а
в
2 файл
б
б
г
а
Нужно удалить из файла одинаковые строки, причем если в первом файле строка "а" встречается 1 раз то из второго файла её надо удалить только один раз. Т.е после должно получиться:
1 файл:
а
в
2 файл:
б
г
Как это сделать?
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Регулярное выражение для поиска html тега
а это думать надо.
могу только подсказать направление
sort --help
uniq --help
после сортировки одинаковые строки будут рядом, вот тут-то вы их и посчитаете, например wc
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Регулярное выражение для поиска html тега
а как насчёт обойтись без коверканья файла?
ведь нередко это существенно. например, в файле есть <script>текст скрипта</script>, который в этом случае с высокой вероятностью станет неработоспособен.
и где здесь «отлов» тэга, занимающего более одной строки?drBatty писал(а): ↑20.05.2009 03:54Код: Выделить всё
sed -r ' :l1 s/<\/tr>|<br(\s+/)?>/&/ tl2 N bl1 :l2 s/\r?\n/ /g s/<\/tr>|<br(\s+/)?>/&\n/g '
<tag bla-bla
bla-bla
bla-bla>
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Регулярное выражение для поиска html тега
щаз... делаю...
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Регулярное выражение для поиска html тега
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Регулярное выражение для поиска html тега
Shell
doc ~/er $echo "<tag bla-bla
bla-bla
bla-bla>
" | sed -rnf htmlpre.sed
<tag bla-bla bla-bla bla-bla>
Код: Выделить всё
#!/bin/sed
H
g
s/.*>([^<>]*)$/\1/
t l1
s/.*<([^<>]*)$/<\1/
t l2
$ b l3
x
b
:l1
x
s/[^>]*$//
b l3
:l2
x
s/<[^<]*$//
:l3
s/\s+/ /g
s/\s*(.*)\s*/\1/
s/([^ \n])</\1\n</g
s/ </\n</g
s/>([^ \n])/>\n\1/g
s/> />\n/g
s/./&/p
b-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Регулярное выражение для поиска html тега
drBatty
круто. но я всё ждал элегантного решения (улыбка).
да, да, вот такой я коварный!
ведь гораздо элегантнее, согласитесь?
p.s. и это только верхушка айсберга sgrep-а.
круто. но я всё ждал элегантного решения (улыбка).
да, да, вот такой я коварный!
Shell
$ cat /tmp/001
lsdkfjkd
kdfk< tag bla-bla
bla-bla
bla-bla
>
lsdkfjkd
< tag bla-bla
bla-bla
bla-bla
>pooioj
$
$ # можно так:
$ sgrep '"<" .. ">"' /tmp/001
< tag bla-bla
bla-bla
bla-bla
>< tag bla-bla
bla-bla
bla-bla
>
$
$ # а можно эдак:
$ sgrep -o '\n%r' '"<" .. ">"' /tmp/001
< tag bla-bla
bla-bla
bla-bla
>
< tag bla-bla
bla-bla
bla-bla
>
$
$ # а можно и вообще разэдак:
$ sgrep -o 'start\n%r\nend\n' '"<" .. ">"' /tmp/001
start
< tag bla-bla
bla-bla
bla-bla
>
end
start
< tag bla-bla
bla-bla
bla-bla
>
endведь гораздо элегантнее, согласитесь?
p.s. и это только верхушка айсберга sgrep-а.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Регулярное выражение для поиска html тега
мне этот скрипт нужен чтобы код разбирать. что-бы в одной строке был 1 тег, либо 1 не тег.
ну а затем очень удобно будет обрабатывать такой текст, например комментарии вырежутся так: sed '/<!--/d', а ссылки так sed '/<a href/, /</a>/d', ну и т.д. Второй командой sed уже можно вложенные таблицы обрабатывать, а может и скрипты на Java
а sgrep это конечно красиво... и элегантно... но как это прикрутить к разбору HTML я не очень понимаю. Точнее понимаю, но это уже будет не слишком элегантно
-
Daeloce
- Сообщения: 62
- ОС: OpenSUSE 11.0 Ubuntu 9.04
Re: Регулярное выражение для поиска html тега
А есть возможность сделать так чтобы sed выдавал только то что изменил. т.е. например данный скрипт
выводит строку в которой было изменение. Например был тег <a href = "bla-bla"> после выполнения скрипта я вижу
<a
href = "bla-bla">
А хотелось бы только <a. Конечно можно потом выполнить второй запрос к sed и выбрать только те строки где начало тега(я сейчас так и делаю) но это не красиво. Есть ли другой вариант?
Код:
sed -nr 's/(<[^>^ ]+)([\ >])/\n\1\n/g
/<!--/d
p' $1выводит строку в которой было изменение. Например был тег <a href = "bla-bla"> после выполнения скрипта я вижу
<a
href = "bla-bla">
А хотелось бы только <a. Конечно можно потом выполнить второй запрос к sed и выбрать только те строки где начало тега(я сейчас так и делаю) но это не красиво. Есть ли другой вариант?
-
Daeloce
- Сообщения: 62
- ОС: OpenSUSE 11.0 Ubuntu 9.04
Re: Регулярное выражение для поиска html тега
Еще такой вопрос. Есть строка: target=_top href="http://top.mail.ru/jump?from=713972" rel="nofollow"><img
Т.е. последний тег заканчивается переводом каретки, как написать рег.выражение чтобы его найти? ПРобовал так
sed -nr 's/(<[^>^ ]+)([\ >\n])/\n\1\n/gp'
Но так не работает, тег <img не находится...Как правильно?
Т.е. последний тег заканчивается переводом каретки, как написать рег.выражение чтобы его найти? ПРобовал так
sed -nr 's/(<[^>^ ]+)([\ >\n])/\n\1\n/gp'
Но так не работает, тег <img не находится...Как правильно?
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Регулярное выражение для поиска html тега
ну дык сотрите всё что за <a
s/(<a ).*/\1/
.* значит "любые символы в любых количествах", а sed - жадная, потому сотрёт сколько сможет, здесь - до конца строки.
запомните на будущее:
никаких \n в строке sed НЕТУ
\n это конец строки и в строку не входит. Единственное исключение - если вы сами его туда ввели.
вам надо не "перевод строки", а "правая граница строки", это $
Код: Выделить всё
sed s/<img$/<IMG/только учтите, что некоторые строки могут в конце содержать пробел и\или(для виндовых текстов) \r
потому, если вы конечно предварительно не очистили строки от мусора в конце, вам надо использовать что-то вроде
Код: Выделить всё
sed s/<img[ \t\r]*$/<IMG/так будет работать...
есть "возврат каретки" \r
есть "перевод строки" \n
это совершенно разные символы.
для sed \r - это обычный символ, который ничего не значит. Разве что он вроде входит в метасимвол \s (пустое место)
-
Daeloce
- Сообщения: 62
- ОС: OpenSUSE 11.0 Ubuntu 9.04
Re: Регулярное выражение для поиска html тега
Я не совсем правильно выразился. Строка может быть другая! Но смысл что тег может быть в конце. Я конец тега ищу с помощью регулярного выражения ([ >]), а надо в него добавить конец строки. Т.е. тег должен заканчиваться либо " " либо ">" либо концом строки.
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Регулярное выражение для поиска html тега
-
Daeloce
- Сообщения: 62
- ОС: OpenSUSE 11.0 Ubuntu 9.04
Re: Регулярное выражение для поиска html тега
Очередной косяк...
Есть файл:
Пытаюсь из этого получить список тегов с номерами строчек в которых они располагаются.
Вот скрипт которым пытаюсь это сделаь:
Но если в строке есть два тега, а в приведенном примере например есть строка : <a bla-bla><img>bla данный скрипт возвращает только последний тег. Т.е результат работы скрипта выглядит так:
А хотелось чтобы был такой:
Что надо поправить в скрипте чтобы он выдавал все теги в строке?
Есть файл:
Код:
<HTML>
<a bla-bla><img>bla
</img>
</a>
</html>
Пытаюсь из этого получить список тегов с номерами строчек в которых они располагаются.
Вот скрипт которым пытаюсь это сделаь:
Код:
tr A-Z a-z < $1 | sed '=' | sed 'N;s/\n/\t/' | sed -nr 's/([0-9]+\t).*(<[^>^ ]+)( |>|$)/\n\2\t\t\1\n/g
/<!--/d
/<meta/d
p' | sed -nr 's/<([^>^ ]+)(\t\t[0-9]+)/\1\2/pg'
Но если в строке есть два тега, а в приведенном примере например есть строка : <a bla-bla><img>bla данный скрипт возвращает только последний тег. Т.е результат работы скрипта выглядит так:
Код:
html 1
img 2
/img 3
/a 4
/html 5
А хотелось чтобы был такой:
Код:
html 1
a 2
img 2
/img 3
/a 4
/html 5
Что надо поправить в скрипте чтобы он выдавал все теги в строке?
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Регулярное выражение для поиска html тега
лень объяснять... это у мну на форуме вроде написано...
Код: Выделить всё
H
/</ {
s/.*//
x
s/\r/ /
s/\s+/ /g
s/ ?([<>]) ?/\1/g
s/<[^>]*/\n&/g
s/^\s*(.*) ?$/\1/
p
}это вы зря...
и это тоже...
это 2 табуляции... в HTLM вроде все пробельные символы эквивалентны... причём даже любые непрерывные группы, даже непрерывные группы, с комментами, даже группы с комментами и с тегами в комментах...
А пробельный символ это \s
-
Daeloce
- Сообщения: 62
- ОС: OpenSUSE 11.0 Ubuntu 9.04
Re: Регулярное выражение для поиска html тега
Почему? Я пишу скрипт который найдет незакрытые теги. У мета тегов нету закрывающих тегов. А комментарии вообще к тегам не относятся.
Табуляции рисую чисто для себя. Тот скрипт который я пишу должен вывести не закрытые теги. А sed лишь подготавливает файл для работы с ним, а именно выделяет теги и добавляет номера строк где они были!
-
Daeloce
- Сообщения: 62
- ОС: OpenSUSE 11.0 Ubuntu 9.04
Re: Регулярное выражение для поиска html тега
Видимо я не правильно объяснил... Написать скрипт который разрежет строчку на отдельные теги я могу, но мне надо к ним еще добавить номер строки в котором онм были. А вот этого не получается...
Давайте я на примере покажу что делаю, что получается и что хочу чтобы получилось.
Есть файл, и в нем допустим есть 9 строка следующего вида:
<a href=''>bla-bla-bla</a>bla<img>
Сначала я добавляю к этой строчке её номер командами: sed '=' | sed 'N;s/\n/\t/' в итоге получаю:
9 <a href=''>bla-bla-bla</a>bla<img>
Теперь я хочу чтобы каждый тег(именно имя тега и слеш(если есть) вначале, без параметров типа href='', и без скобок) начинался с новой строки и к нему был добавлен номер строки где он был(в нашем случае 9). Я пытаюсь сделать это командой sed -nr 's/([0-9]+\t).*(<[^>^ ]+)( |>|$)/\n\2\t\t\1\n/gp'. Но в ответ получаю только:
img 9
А надо чтобы еще и первые два тега(в данном случае два в реальности их может быть сколько угодно) с номерами строчек были на новых строчка. Т.е. надо чтобы из этой строчки получилось следующее:
a 9
/a 9
img 9
Можете помочь исправить команду так чтобы она выводила все теги с номерами строчек а не только последний?
Давайте я на примере покажу что делаю, что получается и что хочу чтобы получилось.
Есть файл, и в нем допустим есть 9 строка следующего вида:
<a href=''>bla-bla-bla</a>bla<img>
Сначала я добавляю к этой строчке её номер командами: sed '=' | sed 'N;s/\n/\t/' в итоге получаю:
9 <a href=''>bla-bla-bla</a>bla<img>
Теперь я хочу чтобы каждый тег(именно имя тега и слеш(если есть) вначале, без параметров типа href='', и без скобок) начинался с новой строки и к нему был добавлен номер строки где он был(в нашем случае 9). Я пытаюсь сделать это командой sed -nr 's/([0-9]+\t).*(<[^>^ ]+)( |>|$)/\n\2\t\t\1\n/gp'. Но в ответ получаю только:
img 9
А надо чтобы еще и первые два тега(в данном случае два в реальности их может быть сколько угодно) с номерами строчек были на новых строчка. Т.е. надо чтобы из этой строчки получилось следующее:
a 9
/a 9
img 9
Можете помочь исправить команду так чтобы она выводила все теги с номерами строчек а не только последний?
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Регулярное выражение для поиска html тега
Shell
$ sgrep -o "%r\t%i\t%j\n" '"<" __ (">" or BLANK)' /ваш/файл
HTML 1 4
a 8 8
img 19 21
/img 28 31
/a 35 36
/html 40 44
$ sgrep -o "%r\t%i\t%j\n" '"<" .. (">" or BLANK)' /ваш/файл
<HTML> 0 5
<a 7 9
<img> 18 22
</img> 27 32
</a> 34 37
</html> 39 45p.s. это я так, для иллюстрации.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Регулярное выражение для поиска html тега
потому-что команда d делает 2 вещи: очищает буфер и запрещает вывод. так как у вас ключ -n, то можно просто выйти на таких строках
Код: Выделить всё
/<!--|<meta/bи как обработается такое?
<!-- comm --> <a
href=...
Мой скрипт не только режет, но ещё и клееит строки -
из
Код: Выделить всё
<
f
f>
g
<
ff
f
>Код: Выделить всё
<ff>g
<ff f>сами попробуйте
я бы сделал так:
1) добавил перед каждой строчкой с < номер строки
2)вставил-бы номер перед < (перед номером надо поставить нецифру, чтоб потом не запутаться.
3)разрезал и склеил строки так, что-бы в одной строке был бы 1 тег
4)перенёс номер из прошлой строки в следующую
проблема в том, что sed не умеет вставлять номер строки в текст. было бы круто написать что-то вроде
Код: Выделить всё
sed 's/^/NUMBER_LINE\t/поэтому приходится извращатся -
Код: Выделить всё
$ sed '=' tst.html | sed -rn 'N; s/</|</g
:l
s/([0-9]+)\n(.*)([^0-9])</\1\n\2\3\1</
t l
s/[0-9]+\n//p'это для любого HTML подойдёт
тут я из < делаю |номер строки<
но зачем знать номер строки? ведь для HTML это неважно!
-
Daeloce
- Сообщения: 62
- ОС: OpenSUSE 11.0 Ubuntu 9.04
Re: Регулярное выражение для поиска html тега
drBatty писал(а): ↑24.05.2009 16:47Код: Выделить всё
$ sed '=' tst.html | sed -rn 'N; s/</|</g :l s/([0-9]+)\n(.*)([^0-9])</\1\n\2\3\1</ t l s/[0-9]+\n//p'
это для любого HTML подойдёт
тут я из < делаю |номер строки<
но зачем знать номер строки? ведь для HTML это неважно!
Большое спасибо работает!:)
Надо это для того чтобы когда скрипт вывел список не закрытых тегов было видно в каких они строчках для того чтобы их найти. Вот первая версия(работающая по задуманной схеме, пусть и имеющая некоторые ограничения на html файл):
Код:
#!/bin/bash
tr A-Z a-z < $1 | sed '=' | sed -rn 'N; s/</|</g
:l
s/([0-9]+)\n(.*)([^0-9])</\1\n\2\3\1</
t l
s/[0-9]+\n//p' | sed -nr 's/([0-9]+|)(<[^>^ ]+)( |>|$)/\n\2\t\1\n/g
/<!--/d
/<meta/d
p' | sed -nr 's/<([^>^ ]+)(\t[0-9]+)/\1\2/pg' > /tmp/htman.tmp
rm /tmp/opentag.tmp
touch /tmp/opentag.tmp
while read LINE; do
TAG=`echo $LINE | sed -r 's/([^(0-9)]+)([0-9]+)/\1/'`
slash=${TAG:0:1}
linewf=${TAG:1}
if [ $slash != "/" ]; then
echo $LINE >> /tmp/opentag.tmp
echo $LINE >> /tmp/test
else
LASTLINE=`sed -n '$p' /tmp/opentag.tmp`
LASTTAG=`echo $LASTLINE | sed -r 's/([^0-9]+)([0-9]+)/\1/'`
while [ "$LASTTAG" != "$linewf" ]
do
if [ `wc -l /tmp/opentag.tmp | awk '{print $1}'` = 0 ]; then
break;
fi
echo $LASTLINE
sed '$d' /tmp/opentag.tmp > /tmp/opentag1.tmp
mv /tmp/opentag1.tmp /tmp/opentag.tmp
LASTLINE=`sed -n '$p' /tmp/opentag.tmp`
LASTTAG=`echo $LASTLINE | sed -r 's/([^0-9]+)([0-9]+)/\1/'`
done
sed '$d' /tmp/opentag.tmp > /tmp/opentag1.tmp
mv /tmp/opentag1.tmp /tmp/opentag.tmp
fi
done < /tmp/htman.tmp
cat /tmp/opentag.tmp
rm /tmp/opentag.tmp
rm /tmp/htman.tmpНаписан ужасно я знаю!
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current