С помощью команды sed замените во входном текстовом файле все вхождения символов '&', '‹', '›' их HTML-объектами.

это мой входной текстовый файл

< > & * ^ % $ # @ ! ) ( ) < > < > > > < 

Это сценарий оболочки sed, который я использую.

sed 's/&/&amp;/g ; s/</&lt;/g ; s/>/&gt;/g' html_file.txt > new_file.txt

Это выходной файл:

<lt; >gt; &amp; * ^ % $ # @ ! ) ( ) <lt; >gt; <lt; >gt; >gt; >gt; <lt; 

Я не могу понять, почему вместо & до сих пор стоят знаки < и >?


person Aayush Gupta    schedule 09.05.2021    source источник
comment
Отвечает ли это на ваш вопрос? поведение sed с & (амперсанд)   -  person Ryszard Czech    schedule 10.05.2021


Ответы (1)


С 1_:

3.3 The 's' Command
[...]
The 's' command (as in substitute) is probably the most important in
'sed' [...]. The syntax of the 's' command is 's/REGEXP/REPLACEMENT/FLAGS'.
[...]
The REPLACEMENT can contain [...] unescaped '&' characters which reference the
whole matched portion of the pattern space.

Побег & с \ в \&.

person Cyrus    schedule 09.05.2021