Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 在osx上使用sed插入带前导空格的新行_Macos_Sed_Insert_Whitespace_Bsd - Fatal编程技术网

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

Macos 在osx上使用sed插入带前导空格的新行,macos,sed,insert,whitespace,bsd,Macos,Sed,Insert,Whitespace,Bsd,我有一个yaml文件,如下所示: :stuff: - text 我最终需要的是: :stuff: - text - moretext 因为它是yaml,它对空格敏感。我一直在尝试使用sed添加一个带有主要空格的新行,并且可以使用gnused来完成,但是我仍然在努力使用osxsed 这些方法适用于gnu sed,但不适用于osx/bsd sed sed -i '/- text/a\ \ - moretext' sed -i -e '/- text/{:a;n;/^$/!ba;i\

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

:stuff:
  - text
我最终需要的是:

:stuff:
  - text
  - moretext
因为它是yaml,它对空格敏感。我一直在尝试使用sed添加一个带有主要空格的新行,并且可以使用gnused来完成,但是我仍然在努力使用osxsed

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

sed -i '/- text/a\ \ - moretext'
sed -i -e '/- text/{:a;n;/^$/!ba;i\ \ - moretext' -e '}'
编辑: 我知道posix在技术上要求在\之后有一行新代码,但最好是在一行中完成?

试试这个:

$ sed 's/- text/&\'$'\n''  - moretxt/' file
:stuff:
  - text
  - moretxt
显然,如果您可以使用awk,它将更简单、更便携:

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

$ sed 's/- text/&\'$'\n''  - moretxt/' file
:stuff:
  - text
  - moretxt
显然,如果您可以使用awk,它将更简单、更便携:

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

谢谢Ed。我花了一点时间来摆弄,但我工作很忙(虽然不是sed)。我遗漏的一些其他相关信息是,我是以vagrant的内联shell provisioner的身份传递参数的,它需要在导致问题的参数周围加上额外的引号。我必须把论点转化成一个脚本,就像米切尔的例子一样,然后它就成功了。干杯这个优雅的
awk
示例最终让我对它有了更多的了解(多年来一直避免使用它)。再见
sed
,我想:D谢谢:)为了我的目的调整示例时,我需要在来自env变量而不是regex的固定字符串匹配之后附加一个自定义行,所以我想到了这个:
awk-vma=“$match”{print}index($0,ma){print“appended line”}文件
。它还有一个好处,就是不需要匹配上面的完整行。谢谢Ed。我花了一点时间来摆弄,但我得到了一个awk来工作(虽然不是sed)。我遗漏的一些其他相关信息是,我是以vagrant的内联shell provisioner的身份传递参数的,它需要在导致问题的参数周围加上额外的引号。我必须把论点转化成一个脚本,就像米切尔的例子一样,然后它就成功了。干杯这个优雅的
awk
示例最终让我对它有了更多的了解(多年来一直避免使用它)。再见
sed
,我想:D谢谢:)为了我的目的调整示例时,我需要在来自env变量而不是regex的固定字符串匹配之后附加一个自定义行,所以我想到了这个:
awk-vma=“$match”{print}index($0,ma){print“appended line”}文件
。它还具有不需要匹配上面的完整行的优点。