Как очистить значения атрибутов XML

На самом деле это довольно просто.

Root — ваш «супер-суперпользователь»

Создайте учетную запись с именем «admin» и предоставьте ему все права root, кроме тех, которые вам не нужны.

Затем создайте пользователя с именем bob и позвольте ему «стать администратором». Используя su или даже sudo.

Теперь у вас есть обычный пользователь (bob )суперпользователь с правами администратора (admin )и суперпользователь (root ).

Если вы хотите изменить имя "root" на другое, вы даже можете это сделать. Технически имеет значение только идентификатор пользователя (0 ).

2
14.01.2020, 11:46
2 ответа
sed -r ':a; s/(name="[^-"]*)-/\1_/; ta'
-1
27.01.2020, 22:16

Любое решение, основанное на sed (или чем-то еще, не выполняющем надлежащий анализ XML ), будет неверным в некоторых пограничных случаях. Например, решение от @Pitel:

(a )заменяет содержимое вещей, которые выглядят как атрибуты имени, даже если они находятся в комментариях или тексте, а не в начальном теге

(b )также изменяет содержимое атрибута с именем firstnameили lastname

.

(c )не может определить атрибут, если он содержит пробелы вокруг знака равенства.

Таким образом, его может хватить для одного -нерегулярного -использования, но не включайте его в производственный рабочий процесс. Если вам нужно что-то производственного качества, используйте XSLT-преобразование. Это не сложно:

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="3.0">
  <xsl:mode on-no-match="shallow-copy"/>
  <xsl:template match="@name">
    <xsl:attribute name="name" select="translate(., '-', '_')"/>
  </xsl:template>
</xsl:transform>
0
27.01.2020, 22:16

Теги

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