Заменить строку в файле содержимым, скопированным из другого файла - PullRequest
1 голос
/ 05 июня 2019

Я выяснил и попытался заменить строки с помощью команды gsed -i следующим образом:

gsed -i 's/sdkUniqueKey=""/sdkUniqueKey="123"/g' AppConstants.txt

Теперь я хочу сделать ту же операцию над другой строкой в ​​моем файле, но, как говорится в моем вопросеМне нужно сначала скопировать содержимое из другого файла, а затем заменить строку, например:

gsed -i 's/sdkPrivateKey=""/sdkPrivateKey="contentsCopiedFromAnotherFile"/g' AppConstants.txt

Еще одна вещь, содержимое (будет скопировано), имеет следующую строку и пробел в нем, который я хотел бы удалить перед копированием.Также он имеет обратную и прямую косые черты, надеюсь, они не создают проблем при замене контента).Вот что я пытаюсь скопировать:

-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDNGillPEfz8d7W
0fyJejF9AYeo8OowcdOcxrpzs4IiXCwPEP1MOHAaOwGTdMwSAeQjw9WOYpE1q+DU
I+Zhh4DVUR8dIdYQtXe+oK/QfhVQMJ3AjTKRvhUmFciGwxXlnLBIkN/ePplNdq9Z
Y5DrSR0lE8X2dD+ZRAkQRpsY8TE48b9f443sbsU4sMvNaxd2XTxe2TLYRvB00w6Q
3lqZiKLzttINBCPoCjhJwBdhcF/LHsCmYhfElPqJxH27BTGBOnbICdmazdnChXQg
3hhsbJmnNDe17Spw0lY
-----END PRIVATE KEY-----

Я также могу скопировать содержимое файла в переменную:

contents ="`cat fileToBeRead`"

Все, что мне нужно, это удалить белоепробелы и новые строки из этой строки и используйте эту переменную "contents" в моей gsed команде

1 Ответ

3 голосов
/ 05 июня 2019

Если я правильно понял ваш вопрос, следующее должно помочь:

#!/bin/bash

fileToBeRead="key.txt" #Whatever

var=$(tr -d '[:blank:]\n' < $fileToBeRead)
sed -i "s#sdkPrivateKey=\"\"#sdkUniqueKey=\"$var\"#g" AppConstants.txt

Поскольку ключ содержит обратную косую черту / косую черту, вы должны использовать другой разделитель для sed (например, #), или предложение будетбыть разобрано.

РЕДАКТИРОВАТЬ:

KEY="$var" perl -pi -e 's/sdkPrivateKey=""/sdkUniqueKey="$ENV{KEY}"/g' AppConstants.txt

perl может использоваться вместо sed во избежание проблем с разделителем sed.Посмотрите комментарий @ DennisWilliamson ниже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...