簡體   English   中英

如何從ssh配置文件中刪除主機條目?

[英]How can I remove a Host entry from an ssh config file?

該文件的標准格式是:

Host example
  HostName example.com
  Port 2222
Host example2
  Hostname two.example.com

Host three.example.com
  Port 4444

知道主機的短名稱,我想刪除整個條目,以便重新添加新的詳細信息。

我最接近的是這個,除了我需要保留以下主機聲明,第二個搜索術語將捕獲兩個術語(如HostName ):

sed '/Host example/,/\nHost/d'

使用GNU sed:

host="example"
sed 's/^Host/\n&/' file | sed '/^Host '"$host"'$/,/^$/d;/^$/d'

輸出:

Host example2
  Hostname two.example.com
Host three.example.com
  Port 4444

s/^Host/\\n&/ :在以“Host”開頭的每一行之前插入換行符

/^Host '"$host"'$/,/^$/d :刪除所有與“Host $ host”匹配的行到下一個空行

/^$/d :清理:刪除每一個空行

我的最終解決方案(有點OSX定位)就是這樣。 它主要基於賽勒斯早先的回答。

sed < $SOURCE "/^$/d;s/Host /$NL&/" | sed '/^Host '"$HOST"'$/,/^$/d;' > $SOURCE

這對於沒有縮進的HostName指令更具彈性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM