我的〜/ .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
首先,由于您使用的是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] 删除。
我来说两句