Похоже, кто-то инициировал «запрос новой строки», например
printf '\n' | nc localhost 80
который выводит это в access.log:
127.0.0.1 - - [27/Apr/2019:01:39:38 +0200] "\n" 400 0 "-" "-"
Вероятно, чтобы протестировать ваш сервер...
Если ваши файлы так просты, как показано, вы можете:
find force-app -type f -name "*-meta.xml" \
-exec sed -i '' -e 's|<apiVersion>[0-9]*[0-9.]*[0-9]*</apiVersion>|<apiVersion>52.0</apiVersion>|' {} \;
Обратите внимание, что в Linux это приведет к ошибке, и вы можете использовать это вместо этого:
find force-app -type f -name "*-meta.xml" \
-exec sed -i 's|<apiVersion>[0-9]*[0-9.]*[0-9]*</apiVersion>|<apiVersion>52.0</apiVersion>|' {} \;
Как обычно, вы действительно не хотите изменять файлы XML с помощью инструмента редактирования текста, ориентированного на строку -. XML не является форматом документа с разделителями новой строки -.
Чтобы обновить значение узла /Component/apiVersion
в одном XML-документе, рассмотрите возможность использования xmlstarlet
следующим образом:
xmlstarlet ed \
-N x='http://soap.sforce.com/2006/04/metadata' \
-u '/x:Component/x:apiVersion' -v '52.0' file-meta.xml
Выражение XPath /x:Component/x:apiVersion
будет соответствовать узлу, который вы хотите обновить, в пространстве имен с именемx
(это определено с помощью -N
для соответствия пространству имен в вашем документе ). Обычно, т. е. когда XML-документ не имеет пространства имен, вам не нужно возиться с -N
или с префиксом x:
к именам узлов, как мы сделали здесь. Новое значение задается с помощью -v
.
Вы можете редактировать несколько файлов в -месте вот так:
xmlstarlet ed --inplace \
-N x='http://soap.sforce.com/2006/04/metadata' \
-u '/x:Component/x:apiVersion' -v '52.0' *-meta.xml
Или, позвонив изfind
:
find force-app -type f -name '*-meta.xml' \
-exec xmlstarlet ed --inplace \
-N x='http://soap.sforce.com/2006/04/metadata' \
-u '/x:Component/x:apiVersion' -v '52.0' {} +
Если вы хотите внести изменение только тогда, когда значение еще не равно 52.0
, вместо этого используйте выражение XPath /x:Component/x:apiVersion[text() != "52.0"]
.
Использованиеxq
(синтаксического анализатора XML, части yq
, оболочки YAML вокруг jq
, синтаксического анализатора JSON изhttps://kislyuk.github.io/yq/):
$ xq -x '.Component.apiVersion |= "52.0"' file.xml
<Component xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>52.0</apiVersion>
</Component>