Я заменил <B> и </B> на <STRONG> и </STRONG> в файле. Это похоже на замену тегов hmtl. Я использовал sed 's/\<B\>/STRONG/g'. Он выполнил эту работу, но если в файле [B] и [/B] присутствует. Затем они также меняются на [STRONG] и [/STRONG]. Я не понимаю логики.
< и > не являются специальными символами в Basic Regular Exions, поэтому их не следует избегать. Когда вы сбежате от них, sed попытается рассматривать их как специальные символы, а затем поведение не определено:
Интерпретация обычного символа, которому предшествует ('\'), не определена, за исключением : Символы ')', '(', '{' и '}' Цифры с 1 по 9 включительно (см. BRE, соответствующие нескольким символам) Символ внутри выражения скобкиИтак, просто используйте [ f5] и > без экранирования:
$ echo 'b<b>' | sed 's/<b>/strong/'
bstrong
Решение с awk. Здесь у меня есть пример файла с двумя строками, которые содержат и теги, и используют функцию gsub для их замены. Затем мы выводим это в файл temp и обратно в исходный файл. Удалите временный файл, когда закончите. При необходимости адаптируйте.
$ cat tags.txt
<B> and </B>
<B> or </B>
$ awk '{gsub("<B>","<STRONG>"); gsub("</B>","</STRONG>");print}' tags.txt
<STRONG> and </STRONG>
<STRONG> or </STRONG>
$ awk '{gsub("<B>","<STRONG>"); gsub("</B>","</STRONG>");print}' tags.txt > tmpfile.txt && cat tmpfile > tags.txt