Команда Sed не вставляет строку после строки, содержащую два слова - PullRequest
0 голосов
/ 27 марта 2019

Я создал файл для дидактических целей под названием «SectionOfFile.html», доступ к содержимому которого следующий:

<p class="c0"><span class="c2">1219. A Igreja viu na arca de No&eacute; uma prefigura&ccedil;&atilde;o da salva&ccedil;&atilde;o pelo Baptismo. Com feito, gra&ccedil;as a ela, um pequeno grupo, ao todo oito pessoas, foram salvas pela &aacute;gua (1 Pe 3, 20): Nas &aacute;guas do dil&uacute;vio, destes-nos uma imagem do Baptismo, sacramento da vida nova, porque as &aacute;guas significam ao mesmo tempo o fim do pecado e o princ&iacute;pio da santidade (14). </span></p> <p class="c0"><span class="c2">2058. As dez palavras resumem e proclamam a Lei de Deus: Estas palavras dirigiu-as o Senhor a toda a vossa assembleia sobre a montanha, do meio do fogo, da nuvem e das trevas, com voz forte, sem acrescentar mais nada: escreveu-as em duas t&aacute;buas de pedra e entregou-mas (Dt 5,22). Por isso &eacute; que estas duas t&aacute;buas s&atilde;o chamadas o testemunho (Ex 25, 16). De facto, elas cont&ecirc;m as cl&aacute;usulas da alian&ccedil;a conclu&ia
cute;da entre Deus e o seu povo. Estas t&aacute;buas do testemunho (Ex 31, 18; 32, 15; 34, 29) devem ser depositadas </span><span class="c5">{</span><span class="c2">&nbsp;na arca &nbsp;(Ex 25, 16: 40, 1-2).</span></p><p class="c0"><span class="c2">3345. Na arca fez, na arca cagou, na arca urinou e na arca escorregou.</span></p><p class="c0"><span class="c2">3348. Entrei numa arca feita de ferro, e na arca encontrei uma ferrugem.</span></p>

При запуске сценария оболочки с именем example.sh, содержимое которого показано ниже:

#!/bin/sh

ContentOfFile=`cat SectionOfFile.html | sed 's/<p class=/\n<p class=/g'`
Word="na arca"
ContentWithLFBeforeWordOccurrence=`echo "$ContentOfFile" | sed "s/${Word}/\n${Word}/g"`
MeaningOfWord="no navio de madeira"
CardinalNumberOfOccurrenceOfWord="4"
echo "$ContentWithLFBeforeWordOccurrence" | sed -r "${CardinalNumberOfOccurrenceOfWord}s/(${Word})/<span class=\"c5">\{<\/span><span class=\"c1\"> \1 <\/span><span class=\"c5\">\{ ${MeaningOfWord} \}\}<\/span><span class=\"c1\">/g" | sed -r 's/ +/ /g' | grep "na arca" > FinalFile.txt

Создает файл FinalFile.txt, содержимое которого показано ниже:

na arca de No&eacute; uma prefigura&ccedil;&atilde;o da salva&ccedil;&atilde;o pelo Baptismo. Com efeito, gra&ccedil;as a ela, um pequeno grupo, ao todo oito pessoas, foram salvas pela &aacute;gua (1 Pe 3, 20): Nas &aacute;guas do dil&uacute;vio, destes-nos uma imagem do Baptismo, sacramento da vida nova, porque as &aacute;guas significam ao mesmo tempo o fim do pecado e o princ&iacute;pio da santidade (14). </span></p>
na arca &nbsp;(Ex 25, 16: 40, 1-2).</span></p>
na arca cagou,
na arca urinou e
na arca escorregou.</span></p>
na arca encontrei uma ferrugem.</span></p>

Однако я хотел бы получить результат, используя переменные "Word", "MeaningOfWord" и "CardinalNumberOfOccurrenceOfWord"; быть равным:

na arca de No&eacute; uma prefigura&ccedil;&atilde;o da salva&ccedil;&atilde;o pelo Baptismo. Com efeito, gra&ccedil;as a ela, um pequeno grupo, ao todo oito pessoas, foram salvas pela &aacute;gua (1 Pe 3, 20): Nas &aacute;guas do dil&uacute;vio, destes-nos uma imagem do Baptismo, sacramento da vida nova, porque as &aacute;guas significam ao mesmo tempo o fim do pecado e o princ&iacute;pio da santidade (14). </span></p>
na arca &nbsp;(Ex 25, 16: 40, 1-2).</span></p>
na arca cagou,
<span class="c5">{</span><span class="c1"> na arca </span><span class="c5">{ no navio de madeira }}</span><span class="c1"> urinou e
na arca escorregou.</span></p>
na arca encontrei uma ferrugem.</span></p>

Что делать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...