Bash вставляет содержимое в тег HTML - PullRequest
0 голосов
/ 24 мая 2019

My Template.html содержит два тега <pre>, в которые необходимо вставить содержимое из двух разных файлов. Следующее вставляет содержимое файла для всех совпадений. Как вставить только в 1-й или 2-й <pre> тег?

sed -i -e '/<pre>/r file1.txt' Template.html

Template.html

<code><html>
<body>
<h1>
<pre>





file1.txt

  hello
  world

file2.txt

  may
  june

Ожидаемый результат:

<code><html>
    <body>
    <h1>
    <pre>
    hello
    world
    
    may
    june
    

Ответы [ 2 ]

0 голосов
/ 26 мая 2019

Это может сработать для вас (GNU sed):

sed -e '/<pre>/{x;s/^/x/;/^x\{1\}$/{x;r file1.txt' -e 'x};x}' Template.html

При обнаружении строки с обязательным тегом увеличьте счетчик в области удержания.

Если счетчик соответствует требуемому номеру (в данном случае 1), добавьте текстовый файл.

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

 sed -e '/<pre>/{x;s/^/x/;/^x\{3\}$/{x;r file1.txt' -e 'x};x}' Template.html
0 голосов
/ 24 мая 2019

sed - для простого s / old / new, , что все .Звучит так, как будто вы хотите, чтобы это было что-то вроде этого (установите tgt на 1 или 2 или в зависимости от того, <pre> вы хотите, чтобы блок был вставлен после):

awk -v tgt=1 '
NR==FNR { rec = rec $0 ORS; next }
{ print }
/<pre>/ && (++cnt == tgt) { printf "%s", rec }
' file1.txt Template.html

, но без примера file1.txt ни ожидаемый результат, это просто непроверенное предположение.

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