Сед, как добавить комментарий после <? xml [что-то?> - PullRequest
1 голос
/ 12 марта 2012

Я хочу добавить комментарий прямо в начале xml-файла.Поскольку первая строка любого xml-файла всегда должна быть похожа на <?xml version="1.0" encoding="UTF-8"?> Мой комментарий должен быть сразу после этого.

Это насколько я понимаю:

sed '/<\?xml.*\?>/a \<!-- comment -->' test.xml

Это почтиработает, но комментарий также добавляется после таких строк, как

 <package xmlns="http://www.idpf.org/2007/opf" unique-identifier="uuid_id">

Так что, похоже, в моей команде есть ошибка.Вы можете мне помочь?

Ответы [ 2 ]

1 голос
/ 12 марта 2012

Ваше основное предположение:

Поскольку первая строка любого xml-файла всегда должна быть такой, как <?xml version="1.0" encoding="UTF-8"?>

совершенно неправильно. Декларация XML может отличаться от этого примера или может быть полностью опущена. И после него не обязательно должен стоять перевод строки.

Выполнение любых манипуляций с XML с помощью инструмента, не поддерживающего XML, такого как sed, - плохая идея хотя бы потому, что в нем не учитывается кодировка символов.

0 голосов
/ 12 марта 2012

Понял:

sed '/<?xml .*?>/a \<!-- comment -->' test.xml

(без знака вопроса перед знаком вопроса)

...