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

时间:2015-05-03 21:50:36

标签: linux macos bash replace find

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

machine api.mydomain.com

示例是:

machine api.mydomain.com
   user foo
   password bar

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

2 个答案:

答案 0 :(得分:3)

尝试:

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

当找到行machine api.mydomain.com时,它会再读取两行,然后将它们全部删除。其他线路没有变化。

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

答案 1 :(得分:1)

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

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