在osx上使用sed插入带有前导空格的新行

时间:2014-07-30 20:20:40

标签: macos sed insert whitespace bsd

我有一个yaml文件,如下所示:

:stuff:
  - text

我最终需要的是:

:stuff:
  - text
  - moretext

因为它的空白是敏感的。我一直在尝试使用sed添加一个带有前导空格的新行,并且可以使用gnu sed来完成它,但我仍然在努力使用osx sed。

这些方法适用于gnu sed,但不适用于osx / bsd sed。

sed -i '/- text/a\ \ - moretext'
sed -i -e '/- text/{:a;n;/^$/!ba;i\ \ - moretext' -e '}'

编辑: 我理解posix在技术上需要在\之后换一个新行但最好这可以在一行中完成吗?

1 个答案:

答案 0 :(得分:2)

试试这个:

$ sed 's/- text/&\'$'\n''  - moretxt/' file
:stuff:
  - text
  - moretxt

显然,如果你可以使用awk,它会更简单,更便携:

$ awk '{print} sub(/- text/,"- moretxt")' file
:stuff:
  - text
  - moretxt