LINUX.ORG.RU

Bash: ошибка в сопоставлении с образцом?

 , , , сопоставление с образцом


0

1

Вот пример обрабатываемого $html, где каждый абзац обрамлён <div> класса "jurAbsatz"

<div><div class="jurAbsatz">(1) Verletzt der Schuldner eine Pflicht aus dem Schuldverhältnis, so kann der Gläubiger Ersatz des hierdurch entstehenden Schadens verlangen. Dies gilt nicht, wenn der Schuldner die Pflichtverletzung nicht zu vertreten hat.</div><div class="jurAbsatz">(2) Schadensersatz wegen Verzögerung der Leistung kann der Gläubiger nur unter der zusätzlichen Voraussetzung des § 286 verlangen.</div><div class="jurAbsatz">(3) Schadensersatz statt der Leistung kann der Gläubiger nur unter den zusätzlichen Voraussetzungen des § 281, des § 282 oder des § 283 verlangen.</div></div>

Вот код, от которого ожидается, что он выведет текст абзаца с номером, соответствующим значению переменной $Absnr

count=0

while [[ $html =~ '<div class="jurAbsatz">([^<]*)<\/div>' ]]; do

    if [ $count -eq $Absnr ]; then
        printf '%s' "${BASH_REMATCH[0]}" | decodehtml
        break
    fi

    ((count++))
done

Почему-то код ничего не выводит. В чём ошибка?

P.S. функция decodehtml к делу отношения не имеет: она определена, заменяет (через sed) HTML character codes на Юникод и работает корректно

★★★★★

увидел 2 ошибки и одну проблему

1) html не меняется будет вытаскивать только первое совпадение нужно в цикле выдирать ещё не обработанное

2) [ $count -eq $Absnr ] сравнивает строки, а у тебя числа переделать в [ '$count' -eq '$Absnr' ]

вот примерная рабочая реализация

html="afffffffff0dafffffffff1dafffffffff2dafffffffff3dafffffffff4dafffffffff5d"

Absnr=3
count=0

while [[ $html =~ a([^a]*)d(.*) ]]; do

    if [ "$count" -eq "$Absnr" ]; then
        echo "${BASH_REMATCH[1]}"
        break
    fi

    html="${BASH_REMATCH[2]}"
    ((count++))
done
проблема как заставить bash регулярки проглотить <=>" в
while [[ $html =~ <div class="jurAbsatz">([^<]*)<\/div>(.*) ]]; do
завтра посмотрю

s-warus ★★★
()
Последнее исправление: s-warus (всего исправлений: 3)

за применение regexp к html/xml в просвещённом мире бьют, иногда даже ногами :-)

см https://stackoverflow.com/questions/15461737/how-to-execute-xpath-one-liners-from-shell

из приведённого по ссылке xsltproc и xmllint практически наверняка у вас установлены.

или микро-скрипт на python, node.js, ruby, и т.д.

но только не паттерн-матчинг

MKuznetsov ★★★★★
()
Ответ на: комментарий от s-warus

готовое решение


#!/bin/bash

html='<div><div class="jurAbsatz">(1) Verletzt der Schuldner eine Pflicht aus dem Schuldverhältnis, so kann der Gläubiger Ersatz des hierdurch entstehenden Schadens verlangen. Dies gilt nicht, wenn der Schuldner die Pflichtverletzung nicht zu vertreten hat.</div><div class="jurAbsatz">(2) Schadensersatz wegen Verzögerung der Leistung kann der Gläubiger nur unter der zusätzlichen Voraussetzung des § 286 verlangen.</div><div class="jurAbsatz">(3) Schadensersatz statt der Leistung kann der Gläubiger nur unter den zusätzlichen Voraussetzungen des § 281, des § 282 oder des § 283 verlangen.</div></div>'

Absnr=2
count=0

while [[ $html =~ class\=\"jurAbsatz\"\>([^\<]*)\<\/div\>(.*) ]]; do

    if [ "$count" -eq "$Absnr" ]; then
        echo "${BASH_REMATCH[1]}"
        break
    fi

    html="${BASH_REMATCH[2]}"
    ((count++))
done

s-warus ★★★
()
Ответ на: комментарий от s-warus

Если не возражаете, упомянул Вас в комментарии к этим строкам кода на https://github.com/eugrus/gesetze-im-shell

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

eugrus ★★★★★
() автор топика
Ответ на: комментарий от MKuznetsov

Поддержу, регэкспы зло, так же как и баш (или перл, который их основной рассадник). Я бы парсил на Си с помощью strcmp(), strstr() и подобного. А вот составлять DOM-дерево ради таких тривиальных операций это явный оверхед.

firkax ★★★★★
()
Ответ на: комментарий от s-warus

2) [ $count -eq $Absnr ] сравнивает строки, а у тебя числа переделать в [ '$count' -eq '$Absnr' ]

Кавычки (двойные как у тебя потом в коде, разумеется, т.к. одинарные вообще всё сломают) тут ничего не меняют. -eq сравнивает числа, хотя и строковое сравнение (которое $count = $Absnr) тоже бы прокатило.

firkax ★★★★★
()
Ответ на: комментарий от eugrus

Спасибо, я думал абзацы взяты случайно,
можно было по регулярке выдернуть сразу нужный,
так как они предваряются номерами (1),(2)

if [[ $html =~ <div class=«jurAbsatz»>(\($Absnr\)[^<]*)</div> ]]; then
код без циклов счетчиков и тп наверно не столь универсален как предыдущий т.к. нумерации может и не быть если абзац один.

#!/bin/bash
html='<div><div class="jurAbsatz">(1) Verletzt der Schuldner eine Pflicht aus dem Schuldverhältnis, so kann der Gläubiger Ersatz des hierdurch entstehenden Schadens verlangen. Dies gilt nicht, wenn der Schuldner die Pflichtverletzung nicht zu vertreten hat.</div><div class="jurAbsatz">(2) Schadensersatz wegen Verzögerung der Leistung kann der Gläubiger nur unter der zusätzlichen Voraussetzung des § 286 verlangen.</div><div class="jurAbsatz">(3) Schadensersatz statt der Leistung kann der Gläubiger nur unter den zusätzlichen Voraussetzungen des § 281, des § 282 oder des § 283 verlangen.</div></div>'

Absnr=2

if [[ $html =~ \<div\ class\=\"jurAbsatz\"\>(\($Absnr\)[^\<]*)\<\/div\> ]]; then
        echo "${BASH_REMATCH[1]}"
fi
или с помощью grep так нагляднее меньше экранированных символов
#!/bin/bash

html='<div><div class="jurAbsatz">(1) Verletzt der Schuldner eine Pflicht aus dem Schuldverhältnis, so kann der Gläubiger Ersatz des hierdurch entstehenden Schadens verlangen. Dies gilt nicht, wenn der Schuldner die Pflichtverletzung nicht zu vertreten hat.</div><div class="jurAbsatz">(2) Schadensersatz wegen Verzögerung der Leistung kann der Gläubiger nur unter der zusätzlichen Voraussetzung des § 286 verlangen.</div><div class="jurAbsatz">(3) Schadensersatz statt der Leistung kann der Gläubiger nur unter den zusätzlichen Voraussetzungen des § 281, des § 282 oder des § 283 verlangen.</div></div>'

Absnr=2

echo $html|grep -o "<div class=\"jurAbsatz\">($Absnr)[^<]*</div>"

s-warus ★★★
()
Ответ на: комментарий от s-warus

Да, наверное так будет лучше.

В текущей реализации есть проблема, когда имеется другой вложенный <div> (другого класса или без класса), к примеру, вот тут для пунктов во втором абзаце: https://www.gesetze-im-internet.de/vwgo/__80.html

Тогда скрипт неверно отсчитывает абзацы.

eugrus ★★★★★
() автор топика
Последнее исправление: eugrus (всего исправлений: 1)
Ответ на: комментарий от s-warus

Попробовал заменить в https://github.com/eugrus/gesetze-im-shell/blob/main/gesetze-im-shell

# Falls Absatz spezifiziert		
else

Absnr=$(roman_to_arabic $Absatz)

count=1

while [[ $html =~ class\=\"jurAbsatz\"\>([^\<]*)\<\/div\>(.*) ]]; do

    if [ "$count" -eq "$Absnr" ]; then
        echo "${BASH_REMATCH[1]}" | decodehtml
        break
    fi

    html="${BASH_REMATCH[2]}" # Regards to s-warus on https://www.linux.org.ru/forum/development/17289104 for this pattern matching!
    ((count++))
done

fi

на

# Falls Absatz spezifiziert		
else

Absnr=$(roman_to_arabic $Absatz)

# Regards to s-warus on https://www.linux.org.ru/forum/development/17289104 for this regex!
echo $html|grep -o "<div class=\"jurAbsatz\">($Absnr)[^<]*</div>" | sed 's/<div class="jurAbsatz">/\n<div class="jurAbsatz">/g; s/<dt>/\n<dt> /g; s/<div>/<div> /g;' | decodehtml

fi

Опять таки спотыкается в случае https://www.gesetze-im-internet.de/vwgo/__80.html на абзаце с включением другого div для пунктов:

[root@DESKTOP-2EQAM1A gesetze-im-shell]# ./gesetze-im-shell 80 I VwGO
§ 80

(1) Widerspruch und Anfechtungsklage haben aufschiebende Wirkung. Das gilt auch bei rechtsgestaltenden und feststellenden Verwaltungsakten sowie bei Verwaltungsakten mit Doppelwirkung (§ 80a).
[root@DESKTOP-2EQAM1A gesetze-im-shell]# ./gesetze-im-shell 80 II VwGO
§ 80
[root@DESKTOP-2EQAM1A gesetze-im-shell]# ./gesetze-im-shell 80 III VwGO
§ 80

(3) In den Fällen des Absatzes 2 Satz 1 Nummer 4 ist das besondere Interesse an der sofortigen Vollziehung des Verwaltungsakts schriftlich zu begründen. Einer besonderen Begründung bedarf es nicht, wenn die Behörde bei Gefahr im Verzug, insbesondere bei drohenden Nachteilen für Leben, Gesundheit oder Eigentum vorsorglich eine als solche bezeichnete Notstandsmaßnahme im öffentlichen Interesse trifft.

Это решаемо через regex или надо действительно перейти на DOM-реализацию?

eugrus ★★★★★
() автор топика
Последнее исправление: eugrus (всего исправлений: 1)
Ответ на: комментарий от eugrus

щас внимательно твой изучу.
я тут набросал работает но последний абзац не дёргает

#!/bin/bash

html='<div class="jurAbsatz">(1) Widerspruch und Anfechtungsklage haben aufschiebende Wirkung. Das gilt auch bei rechtsgestaltenden und feststellenden Verwaltungsakten sowie bei Verwaltungsakten mit Doppelwirkung (&#167; 80a).</div><div class="jurAbsatz">(2) Die aufschiebende Wirkung entf&#228;llt nur <dl style="font-weight:normal;font-style:normal;text-decoration:none;"><dt>1.</dt><dd style="font-weight:normal;font-style:normal;text-decoration:none;"><div>bei der Anforderung von &#246;ffentlichen Abgaben und Kosten,</div></dd><dt>2.</dt><dd style="font-weight:normal;font-style:normal;text-decoration:none;"><div>bei unaufschiebbaren Anordnungen und Ma&#223;nahmen von Polizeivollzugsbeamten,</div></dd><dt>3.</dt><dd style="font-weight:normal;font-style:normal;text-decoration:none;"><div>in anderen durch Bundesgesetz oder f&#252;r Landesrecht durch Landesgesetz vorgeschriebenen F&#228;llen, insbesondere f&#252;r Widerspr&#252;che und Klagen Dritter gegen Verwaltungsakte, die Investitionen oder die Schaffung von Arbeitspl&#228;tzen betreffen,</div></dd><dt>3a.</dt><dd style="font-weight:normal;font-style:normal;text-decoration:none;"><div>f&#252;r Widerspr&#252;che und Klagen Dritter gegen Verwaltungsakte, die die Zulassung von Vorhaben betreffend Bundesverkehrswege und Mobilfunknetze zum Gegenstand haben und die nicht unter Nummer 3 fallen,</div></dd><dt>4.</dt><dd style="font-weight:normal;font-style:normal;text-decoration:none;"><div>in den F&#228;llen, in denen die sofortige Vollziehung im &#246;ffentlichen Interesse oder im &#252;berwiegenden Interesse eines Beteiligten von der Beh&#246;rde, die den Verwaltungsakt erlassen oder &#252;ber den Widerspruch zu entscheiden hat, besonders angeordnet wird.</div></dd></dl>Die L&#228;nder k&#246;nnen auch bestimmen, da&#223; Rechtsbehelfe keine aufschiebende Wirkung haben, soweit sie sich gegen Ma&#223;nahmen richten, die in der Verwaltungsvollstreckung durch die L&#228;nder nach Bundesrecht getroffen werden.</div><div class="jurAbsatz">(3) In den F&#228;llen des Absatzes 2 Satz 1 Nummer 4 ist das besondere Interesse an der sofortigen Vollziehung des Verwaltungsakts schriftlich zu begr&#252;nden. Einer besonderen Begr&#252;ndung bedarf es nicht, wenn die Beh&#246;rde bei Gefahr im Verzug, insbesondere bei drohenden Nachteilen f&#252;r Leben, Gesundheit oder Eigentum vorsorglich eine als solche bezeichnete Notstandsma&#223;nahme im &#246;ffentlichen Interesse trifft.</div><div class="jurAbsatz">(4) Die Beh&#246;rde, die den Verwaltungsakt erlassen oder &#252;ber den Widerspruch zu entscheiden hat, kann in den F&#228;llen des Absatzes 2 die Vollziehung aussetzen, soweit nicht bundesgesetzlich etwas anderes bestimmt ist. Bei der Anforderung von &#246;ffentlichen Abgaben und Kosten kann sie die Vollziehung auch gegen Sicherheit aussetzen. Die Aussetzung soll bei &#246;ffentlichen Abgaben und Kosten erfolgen, wenn ernstliche Zweifel an der Rechtm&#228;&#223;igkeit des angegriffenen Verwaltungsakts bestehen oder wenn die Vollziehung f&#252;r den Abgaben- oder Kostenpflichtigen eine unbillige, nicht durch &#252;berwiegende &#246;ffentliche Interessen gebotene H&#228;rte zur Folge h&#228;tte.</div><div class="jurAbsatz">(5) Auf Antrag kann das Gericht der Hauptsache die aufschiebende Wirkung in den F&#228;llen des Absatzes 2 Satz 1 Nummer 1 bis 3a ganz oder teilweise anordnen, im Falle des Absatzes 2 Satz 1 Nummer 4 ganz oder teilweise wiederherstellen. Der Antrag ist schon vor Erhebung der Anfechtungsklage zul&#228;ssig. Ist der Verwaltungsakt im Zeitpunkt der Entscheidung schon vollzogen, so kann das Gericht die Aufhebung der Vollziehung anordnen. Die Wiederherstellung der aufschiebenden Wirkung kann von der Leistung einer Sicherheit oder von anderen Auflagen abh&#228;ngig gemacht werden. Sie kann auch befristet werden.</div><div class="jurAbsatz">(6) In den F&#228;llen des Absatzes 2 Satz 1 Nummer 1 ist der Antrag nach Absatz 5 nur zul&#228;ssig, wenn die Beh&#246;rde einen Antrag auf Aussetzung der Vollziehung ganz oder zum Teil abgelehnt hat. Das gilt nicht, wenn <dl style="font-weight:normal;font-style:normal;text-decoration:none;"><dt>1.</dt><dd style="font-weight:normal;font-style:normal;text-decoration:none;"><div>die Beh&#246;rde &#252;ber den Antrag ohne Mitteilung eines zureichenden Grundes in angemessener Frist sachlich nicht entschieden hat oder</div></dd><dt>2.</dt><dd style="font-weight:normal;font-style:normal;text-decoration:none;"><div>eine Vollstreckung droht.</div></dd></dl></div><div class="jurAbsatz">(7) Das Gericht der Hauptsache kann Beschl&#252;sse &#252;ber Antr&#228;ge nach Absatz 5 jederzeit &#228;ndern oder aufheben. Jeder Beteiligte kann die &#196;nderung oder Aufhebung wegen ver&#228;nderter oder im urspr&#252;nglichen Verfahren ohne Verschulden nicht geltend gemachter Umst&#228;nde beantragen.</div><div class="jurAbsatz">(8) In dringenden F&#228;llen kann der Vorsitzende entscheiden.</div></div></div></div>'

Absnr=2

html=`echo $html|grep -o "<div class=\"jurAbsatz\">($Absnr).*"`

((Absnr++))

echo $html|grep -o ".*<div class=\"jurAbsatz\">($Absnr)"

s-warus ★★★
()
Ответ на: комментарий от eugrus

готово

#!/bin/bash

html='<div class="jurAbsatz">(1) Widerspruch und Anfechtungsklage haben aufschiebende Wirkung. Das gilt auch bei rechtsgestaltenden und feststellenden Verwaltungsakten sowie bei Verwaltungsakten mit Doppelwirkung (&#167; 80a).</div><div class="jurAbsatz">(2) Die aufschiebende Wirkung entf&#228;llt nur <dl style="font-weight:normal;font-style:normal;text-decoration:none;"><dt>1.</dt><dd style="font-weight:normal;font-style:normal;text-decoration:none;"><div>bei der Anforderung von &#246;ffentlichen Abgaben und Kosten,</div></dd><dt>2.</dt><dd style="font-weight:normal;font-style:normal;text-decoration:none;"><div>bei unaufschiebbaren Anordnungen und Ma&#223;nahmen von Polizeivollzugsbeamten,</div></dd><dt>3.</dt><dd style="font-weight:normal;font-style:normal;text-decoration:none;"><div>in anderen durch Bundesgesetz oder f&#252;r Landesrecht durch Landesgesetz vorgeschriebenen F&#228;llen, insbesondere f&#252;r Widerspr&#252;che und Klagen Dritter gegen Verwaltungsakte, die Investitionen oder die Schaffung von Arbeitspl&#228;tzen betreffen,</div></dd><dt>3a.</dt><dd style="font-weight:normal;font-style:normal;text-decoration:none;"><div>f&#252;r Widerspr&#252;che und Klagen Dritter gegen Verwaltungsakte, die die Zulassung von Vorhaben betreffend Bundesverkehrswege und Mobilfunknetze zum Gegenstand haben und die nicht unter Nummer 3 fallen,</div></dd><dt>4.</dt><dd style="font-weight:normal;font-style:normal;text-decoration:none;"><div>in den F&#228;llen, in denen die sofortige Vollziehung im &#246;ffentlichen Interesse oder im &#252;berwiegenden Interesse eines Beteiligten von der Beh&#246;rde, die den Verwaltungsakt erlassen oder &#252;ber den Widerspruch zu entscheiden hat, besonders angeordnet wird.</div></dd></dl>Die L&#228;nder k&#246;nnen auch bestimmen, da&#223; Rechtsbehelfe keine aufschiebende Wirkung haben, soweit sie sich gegen Ma&#223;nahmen richten, die in der Verwaltungsvollstreckung durch die L&#228;nder nach Bundesrecht getroffen werden.</div><div class="jurAbsatz">(3) In den F&#228;llen des Absatzes 2 Satz 1 Nummer 4 ist das besondere Interesse an der sofortigen Vollziehung des Verwaltungsakts schriftlich zu begr&#252;nden. Einer besonderen Begr&#252;ndung bedarf es nicht, wenn die Beh&#246;rde bei Gefahr im Verzug, insbesondere bei drohenden Nachteilen f&#252;r Leben, Gesundheit oder Eigentum vorsorglich eine als solche bezeichnete Notstandsma&#223;nahme im &#246;ffentlichen Interesse trifft.</div><div class="jurAbsatz">(4) Die Beh&#246;rde, die den Verwaltungsakt erlassen oder &#252;ber den Widerspruch zu entscheiden hat, kann in den F&#228;llen des Absatzes 2 die Vollziehung aussetzen, soweit nicht bundesgesetzlich etwas anderes bestimmt ist. Bei der Anforderung von &#246;ffentlichen Abgaben und Kosten kann sie die Vollziehung auch gegen Sicherheit aussetzen. Die Aussetzung soll bei &#246;ffentlichen Abgaben und Kosten erfolgen, wenn ernstliche Zweifel an der Rechtm&#228;&#223;igkeit des angegriffenen Verwaltungsakts bestehen oder wenn die Vollziehung f&#252;r den Abgaben- oder Kostenpflichtigen eine unbillige, nicht durch &#252;berwiegende &#246;ffentliche Interessen gebotene H&#228;rte zur Folge h&#228;tte.</div><div class="jurAbsatz">(5) Auf Antrag kann das Gericht der Hauptsache die aufschiebende Wirkung in den F&#228;llen des Absatzes 2 Satz 1 Nummer 1 bis 3a ganz oder teilweise anordnen, im Falle des Absatzes 2 Satz 1 Nummer 4 ganz oder teilweise wiederherstellen. Der Antrag ist schon vor Erhebung der Anfechtungsklage zul&#228;ssig. Ist der Verwaltungsakt im Zeitpunkt der Entscheidung schon vollzogen, so kann das Gericht die Aufhebung der Vollziehung anordnen. Die Wiederherstellung der aufschiebenden Wirkung kann von der Leistung einer Sicherheit oder von anderen Auflagen abh&#228;ngig gemacht werden. Sie kann auch befristet werden.</div><div class="jurAbsatz">(6) In den F&#228;llen des Absatzes 2 Satz 1 Nummer 1 ist der Antrag nach Absatz 5 nur zul&#228;ssig, wenn die Beh&#246;rde einen Antrag auf Aussetzung der Vollziehung ganz oder zum Teil abgelehnt hat. Das gilt nicht, wenn <dl style="font-weight:normal;font-style:normal;text-decoration:none;"><dt>1.</dt><dd style="font-weight:normal;font-style:normal;text-decoration:none;"><div>die Beh&#246;rde &#252;ber den Antrag ohne Mitteilung eines zureichenden Grundes in angemessener Frist sachlich nicht entschieden hat oder</div></dd><dt>2.</dt><dd style="font-weight:normal;font-style:normal;text-decoration:none;"><div>eine Vollstreckung droht.</div></dd></dl></div><div class="jurAbsatz">(7) Das Gericht der Hauptsache kann Beschl&#252;sse &#252;ber Antr&#228;ge nach Absatz 5 jederzeit &#228;ndern oder aufheben. Jeder Beteiligte kann die &#196;nderung oder Aufhebung wegen ver&#228;nderter oder im urspr&#252;nglichen Verfahren ohne Verschulden nicht geltend gemachter Umst&#228;nde beantragen.</div><div class="jurAbsatz">(8) In dringenden F&#228;llen kann der Vorsitzende entscheiden.</div></div></div></div>'

Absnr=8

html=`echo $html|grep -o "<div class=\"jurAbsatz\">($Absnr).*"`

((Absnr++))

html2=`echo $html|grep -o ".*<div class=\"jurAbsatz\">($Absnr)"`

if [ -z "$html2" ]; then
        html2="$html"
fi

echo $html2

s-warus ★★★
()
Ответ на: комментарий от s-warus

вот в удобоворимом виде выводит

#!/bin/bash

html='<div class="jurAbsatz">(1) Widerspruch und Anfechtungsklage haben aufschiebende Wirkung. Das gilt auch bei rechtsgestaltenden und feststellenden Verwaltungsakten sowie bei Verwaltungsakten mit Doppelwirkung (§ 80a).</div><div class="jurAbsatz">(2) Die aufschiebende Wirkung entfällt nur <dl style="font-weight:normal;font-style:normal;text-decoration:none;"><dt>1.</dt><dd style="font-weight:normal;font-style:normal;text-decoration:none;"><div>bei der Anforderung von öffentlichen Abgaben und Kosten,</div></dd><dt>2.</dt><dd style="font-weight:normal;font-style:normal;text-decoration:none;"><div>bei unaufschiebbaren Anordnungen und Maßnahmen von Polizeivollzugsbeamten,</div></dd><dt>3.</dt><dd style="font-weight:normal;font-style:normal;text-decoration:none;"><div>in anderen durch Bundesgesetz oder für Landesrecht durch Landesgesetz vorgeschriebenen Fällen, insbesondere für Widersprüche und Klagen Dritter gegen Verwaltungsakte, die Investitionen oder die Schaffung von Arbeitsplätzen betreffen,</div></dd><dt>3a.</dt><dd style="font-weight:normal;font-style:normal;text-decoration:none;"><div>für Widersprüche und Klagen Dritter gegen Verwaltungsakte, die die Zulassung von Vorhaben betreffend Bundesverkehrswege und Mobilfunknetze zum Gegenstand haben und die nicht unter Nummer 3 fallen,</div></dd><dt>4.</dt><dd style="font-weight:normal;font-style:normal;text-decoration:none;"><div>in den Fällen, in denen die sofortige Vollziehung im öffentlichen Interesse oder im überwiegenden Interesse eines Beteiligten von der Behörde, die den Verwaltungsakt erlassen oder über den Widerspruch zu entscheiden hat, besonders angeordnet wird.</div></dd></dl>Die Länder können auch bestimmen, daß Rechtsbehelfe keine aufschiebende Wirkung haben, soweit sie sich gegen Maßnahmen richten, die in der Verwaltungsvollstreckung durch die Länder nach Bundesrecht getroffen werden.</div><div class="jurAbsatz">(3) In den Fällen des Absatzes 2 Satz 1 Nummer 4 ist das besondere Interesse an der sofortigen Vollziehung des Verwaltungsakts schriftlich zu begründen. Einer besonderen Begründung bedarf es nicht, wenn die Behörde bei Gefahr im Verzug, insbesondere bei drohenden Nachteilen für Leben, Gesundheit oder Eigentum vorsorglich eine als solche bezeichnete Notstandsmaßnahme im öffentlichen Interesse trifft.</div><div class="jurAbsatz">(4) Die Behörde, die den Verwaltungsakt erlassen oder über den Widerspruch zu entscheiden hat, kann in den Fällen des Absatzes 2 die Vollziehung aussetzen, soweit nicht bundesgesetzlich etwas anderes bestimmt ist. Bei der Anforderung von öffentlichen Abgaben und Kosten kann sie die Vollziehung auch gegen Sicherheit aussetzen. Die Aussetzung soll bei öffentlichen Abgaben und Kosten erfolgen, wenn ernstliche Zweifel an der Rechtmäßigkeit des angegriffenen Verwaltungsakts bestehen oder wenn die Vollziehung für den Abgaben- oder Kostenpflichtigen eine unbillige, nicht durch überwiegende öffentliche Interessen gebotene Härte zur Folge hätte.</div><div class="jurAbsatz">(5) Auf Antrag kann das Gericht der Hauptsache die aufschiebende Wirkung in den Fällen des Absatzes 2 Satz 1 Nummer 1 bis 3a ganz oder teilweise anordnen, im Falle des Absatzes 2 Satz 1 Nummer 4 ganz oder teilweise wiederherstellen. Der Antrag ist schon vor Erhebung der Anfechtungsklage zulässig. Ist der Verwaltungsakt im Zeitpunkt der Entscheidung schon vollzogen, so kann das Gericht die Aufhebung der Vollziehung anordnen. Die Wiederherstellung der aufschiebenden Wirkung kann von der Leistung einer Sicherheit oder von anderen Auflagen abhängig gemacht werden. Sie kann auch befristet werden.</div><div class="jurAbsatz">(6) In den Fällen des Absatzes 2 Satz 1 Nummer 1 ist der Antrag nach Absatz 5 nur zulässig, wenn die Behörde einen Antrag auf Aussetzung der Vollziehung ganz oder zum Teil abgelehnt hat. Das gilt nicht, wenn <dl style="font-weight:normal;font-style:normal;text-decoration:none;"><dt>1.</dt><dd style="font-weight:normal;font-style:normal;text-decoration:none;"><div>die Behörde über den Antrag ohne Mitteilung eines zureichenden Grundes in angemessener Frist sachlich nicht entschieden hat oder</div></dd><dt>2.</dt><dd style="font-weight:normal;font-style:normal;text-decoration:none;"><div>eine Vollstreckung droht.</div></dd></dl></div><div class="jurAbsatz">(7) Das Gericht der Hauptsache kann Beschlüsse über Anträge nach Absatz 5 jederzeit ändern oder aufheben. Jeder Beteiligte kann die Änderung oder Aufhebung wegen veränderter oder im ursprünglichen Verfahren ohne Verschulden nicht geltend gemachter Umstände beantragen.</div><div class="jurAbsatz">(8) In dringenden Fällen kann der Vorsitzende entscheiden.</div></div></div></div>'


function decodehtml {
        sed 's/<[^>]*>//g; s/\ä/ä/g; s/\Ä/Ä/g; s/\ö/ö/g; s/\Ö/Ö/g; s/\ü/ü/g; s/\Ü/Ü/g; s/\ß/ß/g; s/\ä/ä/g; s/\Ä/Ä/g; s/\ö/ö/g; s/\Ö/Ö/g; s/\ü/ü/g; s/\Ü/Ü/g; s/\ß/ß/g; s/\§/\§/g; s/\ / /g'
}

Absnr=2

html=`echo $html|grep -o "<div class=\"jurAbsatz\">($Absnr).*"`

((Absnr++))

html2=`echo $html|grep -o ".*<div class=\"jurAbsatz\">($Absnr)"`

if [ -z "$html2" ]; then
        html2="$html"
fi

echo $html2|sed "s/<div class=\"jurAbsatz\">($Absnr)//g" | sed 's/<dl/\n<dl/g;s#</div></div>##g;s#</div>#</div>\n#g;'| decodehtml

s-warus ★★★
()
Последнее исправление: s-warus (всего исправлений: 2)
Ответ на: комментарий от s-warus

убрал двойные переводы строк в конце более простой для понимания код

let next=$Absnr+1

html2=`echo $html|grep -o "<div class=\"jurAbsatz\">($Absnr).*<div class=\"jurAbsatz\">($next)"`

if [ -z "$html2" ]; then
        html2=`echo $html|grep -o "<div class=\"jurAbsatz\">($Absnr).*"`
fi

echo $html2| sed 's/<dl/\n<dl/g;s#</div>#</div>\n#g;' | \
decodehtml  | sed -z "s/\n($next)\n/\n/g;s/\n\n/\n/g;s/\n\n/\n/g;s/\n\n/\n/g;"

s-warus ★★★
()