AIX -Использование Sed для замены строки в файле

Барретт 2012 говорит на странице 74:

"-printfstring напечатать заданную строку, к которой могут быть применены подстановки в порядке библиотечной функции C printf()."

и рекомендует, конечно же, справочную страницу для полного списка опций. В то время как такие вещи, как find. -printf '%s %p\n', объясняются, другие — нет. @jimупомянул об использовании %T. Я лично использую сценарий со строкой, похожей на find. -printf '%T@ %p\n', но никогда не могу понять, что это за %T@. Может ли кто-нибудь сослаться на источник, объясняющий эти параметры, которых нет на страницах руководства?

1
27.04.2021, 15:50
1 ответ

Я сомневаюсь, что ваша команда sedработает на RedHat, так как пробелы в регулярном выражении не совпадают в примере документа, который вы показываете. Кроме того, синтаксический анализ или изменение документа, написанного в структурированном формате документа, таком как XML, в лучшем случае опасны с помощью инструмента редактирования текста, ориентированного на строку -, такого как sed.

Вторая проблема связана с использованием вами не -стандартной -iопции. Переносимые способы редактирования места в -описаны в Q/A . Как добиться переносимости с помощью sed -i (в -редактирование места )?

Предполагая, что XML-документ правильно -сформирован, вы обычно используете XML-парсер командной строки для изменения содержимого документа.

Одним из таких синтаксических анализаторов XML командной строки является xmlstarlet.

xmlstarlet ed -u '//config' -v 3242352353242342424 file.xml

Это установит значение всех узлов configв строку 3242352353242342424(, это значение будет правильно закодировано с помощью xmlstarlet, если необходимо ). Любое предыдущее значение будет отброшено, любые атрибуты узлов configбудут сохранены.

Измененный документ будет записан в стандартный вывод, поэтому вы сможете перенаправить его в новый файл. Существует также параметр --inplace, который следует использовать после подкоманды -edв командной строке.

Известно, что

xmlstarletработает как в Linux, так и в AIX.

1
28.04.2021, 22:50

Теги

Похожие вопросы