[英]insert new line with leading whitespace using sed on osx
我有一个yaml文件,看起来像这样:
:stuff:
- text
我最终需要的是:
:stuff:
- text
- moretext
因为它是Yaml,所以它对空格敏感。 我一直在尝试使用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技术上需要在a \\之后换行,但是最好可以在一行中完成?
尝试这个:
$ sed 's/- text/&\'$'\n'' - moretxt/' file
:stuff:
- text
- moretxt
显然,如果可以使用awk,它将更简单,更可移植:
$ awk '{print} sub(/- text/,"- moretxt")' file
:stuff:
- text
- moretxt
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.