Проверка на повреждение аудиофайла

Ваша команда sed немного запуталась.

sed -i '' "remote_paths/.*[\/]([^\"]*)/$BRANCH_NAME/g"

Прежде всего, не используйте sed с -i, если вы все еще пытаетесь заставить что-то работать. Это просто рецепт уничтожения важных файлов.

Во-вторых, r в remote_path — это команда sed, которая читает файл. Я почти уверен, что он ищет файл с именем emote_paths/.*[\/]([^\"]*)/$BRANCH_NAME/g или хотя бы emote_paths.В любом случае он не выйдет с ошибкой, если файл не существует.

Похоже, вы хотели что-то вроде

s#\(remote_path.*/home/myname/public_html/\)\([A-Z0-9-]*\)#\1$BRANCH_NAME#g

Команда становится

sed "s#\(remote_path.*/home/myname/public_html/\)\([A-Z0-9-]*\)#\1$BRANCH_NAME#g" \
  "$WORKING_DIR/sftp-config.json" >"$WORKING_DIR/sftp-config.json.new"

Или, если имя ветки находится в конце строки после последнего / и строки remote_path однозначно находит эту строку:

sed "/remote_path/s#/[^/]*\$#$BRANCH_NAME#" \
  "$WORKING_DIR/sftp-config.json" >"$WORKING_DIR/sftp-config.json.new"

В идеале, однако, вы должны использовать для этого инструмент, поддерживающий JSON, например jq :

jq ".remote_path = (.remote_path | split(\"/\") | .[-1] = \"$BRANCH_NAME\" | join(\"/\"))" \
  input.json >output.json

1
20.05.2016, 14:38
0 ответов

Теги

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