Заменить HTML-теги - PullRequest
       7

Заменить HTML-теги

1 голос
/ 19 августа 2010

Мой HTML-код имеет следующую строку.

<TH>column1</TH><TH>column2</TH><TH>column3</TH>

Можно ли использовать инструмент sed для замены column1 на «Имя», column2 на «Фамилия» ...

<TH>Name</TH><TH>Surname</TH><TH>City</TH>

У меня есть список столбцов в операторе echo моего сценария оболочки.

echo 'Name, Surname, City'

Эти 3 значения необходимо заменить в соответствующих столбцах в коде HTML.Количество столбцов может измениться.

Ответы [ 2 ]

3 голосов
/ 19 августа 2010

Можете ли вы изменить формат ввода имен новых столбцов, или вы застряли с echo. И появляется ли строка заголовка таблицы один раз для каждого файла html или несколько раз?

Для вашей текущей ситуации это будет работать:

echo 'Name, Surname, City' |
awk -F'<TH>|</TH><TH>|</TH>' 'NR==1{n=split($0,a,", *");OFS="";next}/<TH>/{for(i=1; i<=n;i++)$(i+1)="<TH>"a[i]"</TH>"}1' - file.html

Выход:

<TH>Name</TH><TH>Surname</TH><TH>City</TH>

Обратите внимание, что все пойдет не так, когда ваш html-код будет иметь другую форму (дополнительные или отсутствующие символы новой строки). Если вы хотите сделать что-то более продвинутое, вы должны использовать правильный синтаксический анализатор SGML вместо awk или sed.

0 голосов
/ 19 августа 2010

поместите ваши замены в переменные вместо того, чтобы делать эхо, затем просто

sed 's|<TH>column1<\/TH>|<TH>Name</TH>|;s|<TH>column2</TH>|<TH>Surname</TH>|;s|<TH>column3</TH>|<TH>City</TH>|' file

Обратите внимание, это не является надежным доказательством, если ваш шаблон охватывает несколько строк.Но если все, что вам нужно заменить, находится в одной строке, то все должно быть в порядке.

...