У меня есть файл с некоторыми случайными строками, отмеченными с помощью %
, как отметить все отмеченное содержание с xml как тег.
ПРИМЕР:
tt gs sdf
% sdjfsg
% sdfsdf
sdfsdf
% sdfsd
% rewerwe
Кому:
tt gs sdf
<TAG>sdjfsg
sdfsdf</TAG>
sdfsdf
<TAG>sdfsd
rewerwe</TAG>
Вы могли дать 'sed' шанс...
sed -ri ':x;$!{N;bx};s/% ([^\n]*)(\n|$)/<tag>\1<\/tag>\n/g;s/<\/tag>\n<tag>/\n/g;s/\n$//' tst.txt
Это отметит Ваш файл на месте.
Объяснение:
:x;$!{N;bx}
-> globbing файл к одному bufferlines/% ([^\n]*)(\n|$)/<tag>\1<\/tag>\n/g
-> отмечающий все строки, начинающиеся с '%' s/<\/tag>\n<tag>/\n/g
->, удаляют ненужные теги (если закрывающий тэг, сопровождаемый открывающим тэгом) s/\n$//
->, удаляют ненужную новую строку в конце файла В конечном счете, возможно сделать это еще короче, но это было первым простым способом, которым я мог вообразить.