2015-07-17 2 views
1

У меня есть файл first.html, который содержит следующий код:Заменить шаблон с строкой из файла, используя AWK/СЭД

<tr> 
<td class="headerValue">One</td> 
</tr> 
<tr> 
<td class="headerValue">Two</td> 
</tr> 

Теперь у меня есть еще один файл second.txt, который содержит несколько значений, как:

Three 
Four 

Я хочу заменить значение в каждом вхождении «headerValue» на значение из второго файла.

Например. после замены first.html станет

<tr> 
<td class="headerValue">Three</td> 
</tr> 
<tr> 
<td class="headerValue">Four</td> 
</tr> 

Помогите?

+0

Вам нужны изменить значение тега для каждого тега, имеющего класс 'headerValue', соответствующий порядку (т.е. первое значение тега будет иметь первую строку второго.txt, второе значение тега будет иметь вторую строку и т. д.?). – Alepac

ответ

0

Сочетание grep и sed может сделать трюк:

Grep Pattern3 из file2; заменяющий образец pattern1 в file1 с ним:

a="$(grep -o 'headerValue>Three' file2)" 
sed "s/headerValue>One/$a/" file1 
0
awk 'BEGIN { i1 = 0; i2 = 0}; NR == FNR { a[i1++]=$1 }; ! /<td class="headerValue">/ && NR != FNR {print}; /<td class="headerValue">/ && NR != FNR { print gensub(/>.*</, ">"a[i2++]"<", "", $0); };' file2.txt file1.txt 

, где "file2.txt" содержит "три, четыре и т.д." и "file1.txt" содержит исходные данные XML

Смежные вопросы