繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM