通过 bash 在 .netrc 文件中查找条目,如果存在则将其删除

Find entry in .netrc file via bash and delete it if exists

在 bash 中,如何在文件 ~/.netrc 中搜索以下字符串并删除该行 加上接下来的两行 如果找到:

machine api.mydomain.com

例子是:

machine api.mydomain.com
   user foo
   password bar

它应该删除所有三行,但我无法匹配 userpassword,因为它们是未知的。唯一的固定值是 machine api.mydomain.com.

让我们一起google吧-sed or awk: delete n lines following a pattern

所以,答案是sed -e '/machine api.mydomain.com/,+2d' ~/.netrc。如果需要就地进行更改,请添加 -i 标记。

尝试:

sed -i '' '/^machine api.mydomain.com$/{N;N;d;}' ~/.netrc

当它找到行 machine api.mydomain.com 时,它又读入两行,然后将它们全部删除。其他线路不变。

对于 GNU sed,-i 的参数是可选的。对于 OSX (BSD) sed,参数是必需的,但允许为空,如上所示。