我有一个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在技术上需要在\之后换一个新行但最好这可以在一行中完成吗?
答案 0 :(得分:2)
试试这个:
$ sed 's/- text/&\'$'\n'' - moretxt/' file
:stuff:
- text
- moretxt
显然,如果你可以使用awk,它会更简单,更便携:
$ awk '{print} sub(/- text/,"- moretxt")' file
:stuff:
- text
- moretxt