Как заменить содержимое файла XML с помощью команды sed для сценариев оболочки?

У меня есть файл config.xml, который показывает:

<userid>myUserId</userid>
<password>myPass</password>

Как заменить myUserId и myPass на sed?

1
задан 19.05.2020, 04:48

3 ответа

sed "s/myUserId/$1/;s/myPass/$2/" originalfile 
1
ответ дан 19.05.2020, 04:49
  • 1
    если Вы выполняете сценарий как: ./changeUser.sh ID PASS, затем позиционные параметры 0$, 1$, 2$ являются./changeUser.sh, идентификатором, ПЕРЕДАЧЕЙ. Используйте ' ' для литералов и использования " " для переменных. s означает замену. – Konrad Rudolph 19.05.2020, 04:49
  • 2
    вероятно, можно использовать регулярное выражение, что-то как "<password>.*</password>" для соответствия. – danielmhanover 19.05.2020, 04:50
  • 3
    Что, если я don' t знают то, что было моим идентификатором пользователя и паролем промежуточный тег? – Patrick Hofman 19.05.2020, 04:50
  • 4
    Как я могу сделать это для нескольких xml файлов? – Patrick Hofman 19.05.2020, 04:51
  • 5
    Вы могли объяснить? – Patrick Hofman 19.05.2020, 04:51

Решение, Найденное

echo "cat //body/username" | xmllint --shell config.xml | sed '/^\/ >/d' | sed 's/<[^>]*.//g'

, Может любой объяснять этот комплекс regex мне (^_^ ")

1
ответ дан 19.05.2020, 04:49
sed 's/old/new/g' test.txt > test1.txt
-2
ответ дан 19.05.2020, 04:50
  • 1
    Это управляет XML как строкой. Это является по сути хрупким и должно избежаться. – Matthew Watson 19.05.2020, 04:50

Теги

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