Я пытаюсь добавить новую строку с данными из файла в другой файл. Проблема в том, что данные в исходном файле содержат пробелы, поэтому я не все включаю.
Вот мой код:
Исходный файл: 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 звучит так, как будто это может быть ваш лучший выбор в этом случае, хотя и немного сложнее.