Mac OS Bash Sed yaml文件,php文件为字符串,反斜杠\ n结果仅在n中

时间:2018-06-03 06:23:35

标签: bash sed yaml

我正在修改一个包含以下内容的yaml文件:

name: config.php
data:
  config.php: <CONFIG_PHP_SECTION>
folder: test

现在,config.php是这样的:

<?php
  /* This is a config
   */
  $app['env'] = 'sandbox';
  $app['db'] = [
    'host'=>'localhost'
  ]

有没有办法可以使用awk或sed或perl来实现这个目标:

name: config.php
data:
  config.php: "<?php\n  /* This is a config\n  */\n $app['env'] = 'sandbox';\n  $app['db'] = [\n    'host'=>'localhost'\n  ]"
folder: test

我尝试使用CONFIG=$(awk '{printf "%s\\n", $0}' config | tr '"' "\'")将换行符更改为\ n,然后sed -i "" "s&<CONFIG_PHP_SECTION>&\"$CONFIG\"&" config.yaml ...但是,我得到的只是一个奇怪的<?phpn /* This is a confign */n $app['env'] = 'sandbox';n $app['db'] = [n 'host'=>'localhost'n ],一个没有反斜杠的字符串前面的。

我也尝试过使用tr '\n' "\\n",但我得到的只是一个实际换行符(打破了yaml文件)

无论如何我真的可以显示并显示并保存到bash中的config.yaml中吗?

由于

P.S。建议的重复“"sed" Insert Backslash to File”对我不起作用...你能详细说明一下吗,@ RobinGreen?谢谢!

当我sed -i "" 's&<CONFIG_PHP_SECTION>&"$CONFIG"&' config.yaml时,输出为

name: config.php
data:
  config.php: "$CONFIG"
folder: test

当我sed -i "" 's&<CONFIG_PHP_SECTION>&"'"$CONFIG"'"&' config.yaml时,输出与缺少\的输出相同。

另外...... CONFIG已经是\\n,它只是最后一个sed命令,\被删除而n落后。

0 个答案:

没有答案