我正在尝试将一个文件中的数据添加到另一个文件中的新行。问题是,源文件中的数据带有空格,因此我无法包含所有内容。
这是我的代码:
源文件: 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 听起来可能是您最好的选择,尽管有点复杂。