使用 sed 从文件中添加新行

使用 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
...

目标文件是添加了 token 的 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
...

所以问题似乎出在空格上?我试过用“$i”,但结果还是一样。有什么想法吗?

答案1

您可能想将每一行加载到文件中。通过使用 for 循环,cat您实际上是在加载每个用空格表示的“单词”。使用read获取每一行。

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

答案2

如果您仅需添加少量内容,循环此操作是否有特定原因?

如果您有多个文件或类似的东西,或者只是想将一个文件的内容插入到另一个文件中,那么这个 SE 问题似乎有一个很好的答案: https://unix.stackexchange.com/questions/141387/sed-replace-string-with-file-contents

在这种情况下,Awk 听起来可能是您最好的选择,尽管有点复杂。

相关内容