Назад | Перейти на главную страницу

Добавление новой строки из файла с помощью sed

Я пытаюсь добавить новую строку с данными из файла в другой файл. Проблема в том, что данные в исходном файле содержат пробелы, поэтому я не все включаю.

Вот мой код:

Исходный файл: token

cat token
Token = [223, 146, 134, 157, 244, 212, 236, 171]

Мой файл слияния: preconfig.ini

...
EnableDebugConsole = false
AllowStreamPush = false
UploadLimit = 83886080
RunAsUser = 0
RunAsGroup = 0
...

Целевой файл - это config.ini с добавленным токеном. Я использую sed:

for i in $(cat token); do (sed -e '/EnableDebugConsole/a\' -e $i preconfig.ini > config.ini); done

После этого мой config.ini будет выглядеть так:

...
EnableDebugConsole = false
171]
AllowStreamPush = false
UploadLimit = 83886080
RunAsUser = 0
RunAsGroup = 0
...

Значит, проблема в wihitespaces? Я пробовал с «$ i», но результат остался прежним. Любые идеи?

Вы, вероятно, хотите загрузить каждую строку в файл. Используя цикл for с cat вы фактически загружаете каждое «слово», обозначенное пробелом. Использовать read для получения каждой строки.

while read file; do (sed -e '/EnableDebugConsole/a\' -e $file preconfig.ini > config.ini); done < token

Есть ли конкретная причина, по которой вы зацикливаетесь на этом, если вам нужно добавить только небольшой объем контента?

Если у вас есть несколько файлов или что-то в этом роде, или вы просто хотите взять содержимое одного файла и вставить его в другой, этот вопрос SE кажется хорошим ответом: https://unix.stackexchange.com/questions/141387/sed-replace-string-with-file-contents

Awk звучит так, как будто это может быть ваш лучший выбор в этом случае, хотя и немного сложнее.