[英]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.