如何使我的sed命令在GNU中工作在BSD中工作

Stackoverfrog

我的〜/ .ssh / config中有一个阻止内容。以“#BEGIN AUTO GENERATED CONTENT”行开头,以“#END AUTO GENERATED CONTENT”行结束

我有一条命令替换了这两行之间的内容,内容是从名为“ config”的文件中读取的

sed -i -ne '/# BEGIN AUTO GENERATED CONTENT/ {p; r config' -e ':a; n; /# END AUTO GENERATED CONTENT/ {p; b}; ba}; p' ~/.ssh/config

它在ubuntu上运行良好,但是在使用bsd sed的mac上无法运行。它给出了此错误消息:

sed: 1: "/# BEGIN AUTO GENERATED ...": unexpected EOF (pending }'s)

我需要更正此命令才能在bsd中工作。在Mac中不使用gsed

拉克什·沙玛(Rakesh Sharma)

首先,由于您使用的是Mac,-i因此无法使用单独的选项。您需要为其提供一个值,在您的情况下为空。

其次,这是确定的改变p;b对以p;d你的情况,因为-n开关生效。从此以后,branchb命令与右括号之间的胶合效果不佳seds

$ sed -i '' -ne '/# BEGIN AUTO GENERATED CONTENT/{' -e 'p;r config' -e ':a;n' -e '/# END AUTO GENERATED CONTENT/{' -e 'p;d' -e '}' -e 'ba' -e '}' -e 'p' ~/.ssh/config

除非这是一种使用一扔的东西,否则最好将其重写为文件,然后按以下方式调用:

$ sed -i '' -nf ./code ~/.ssh/config

$ cat ./code
   /# BEGIN AUTO GENERATED CONTENT/{
      p
      r config
      :loop
         n
         /# END AUTO GENERATED CONTENT/{
            p
            d
         }
      bloop
   }
   p

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我运行的命令在sed中无法正常工作

sed命令如何工作?

sed命令如何工作?

为什么sed命令可以交互工作,但不能在我的脚本中工作?

如何知道我的cmd命令是否仍在python中工作

如何使GNU __attribute __((constructor))在库中工作?

如何使@'...'@在powershell.exe-命令“”中工作?

ES中的“删除索引”命令如何工作?

在bash命令中管道如何工作?

“ ls”命令在Linux / Unix中如何工作?

@ 符号在此命令中如何工作?

如何使“ bind”命令在sh shell中工作

submatch 命令在 Vim 中是如何工作的?

'sed'命令在PBS脚本中无法正常工作

如何在GNU sed中结束`i`命令?

BSD sed忽略a \命令文本中的前导空格

如何在GNU Parallel中传递工作编号?

“记住我”在Spring Security中如何工作?

我如何获得投影$在pymongo中工作?

如何使我的MouseListener方法在Java中工作?

我如何让Mockito在androidTest中工作

如何使ActiveStorage在我的语言环境中工作?

$ {VAR}中的我如何才能在bash中工作,而不是“ $ {VAR [@]}”中的我如何工作?

在macOS中,安装GNU替代产品后,如何获得原始(BSD)命令的手册(手册)页?

我如何让我的 .env 文件在我的 .py 文件中工作?

sed 抛出“替换命令中的错误标志”但在 package.json 中工作正常

如果它们在 Swift 1.1 中工作,我如何让我的函数定义在 Swift 3.1 中工作?

在GNU和BSD Makefile中运行命令并将结果存储到变量中

如何在其他工作目录中运行命令?