You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将指定模式文本块及后续n行移至文件末尾并修改别名?

使用ed命令处理SSH配置文件的移动与修改需求

以下是满足你需求的ed命令示例,针对~/.ssh/config文件操作:

ed -s ~/.ssh/config <<'EOF'
/^Host vps6$/
,+3m$
$?-^Host vps6$?
s/vps6/vps6-old/
wq
EOF

命令解释

  1. 定位目标配置行:/^Host vps6$/ 精准匹配以Host vps6开头的行,避免误匹配注释或其他包含vps6的内容。
  2. 移动配置块:,+3m$ 将当前行(匹配到的Host vps6行)及其后续3行(共4行)移动到文件末尾。ed的移动操作不会产生多余换行,解决你用sed遇到的问题。
  3. 定位移动后的Host行:$?-^Host vps6$? 从文件末尾向前搜索最近的Host vps6行,确保准确找到刚移动的配置块的别名行。
  4. 修改别名:s/vps6/vps6-old/ 给别名添加-old后缀。
  5. 保存退出:wq 保存修改并退出ed。

灵活调整后续行数

如果需要移动的后续行数不是3,只需修改,+3m$中的数字即可。比如要包含后续5行,就改成,+5m$——总移动行数为1 + 指定数字(匹配行本身+后续N行)。

测试建议

如果不确定修改效果,可以先将wq替换为p(仅打印修改后的内容,不保存),或者用ed -n ~/.ssh/config进入交互模式,逐行输入命令测试。

内容的提问来源于stack exchange,提问作者Liso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 04:10:32