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

修改sed反向引用正则,使其支持空格与制表符分隔的/etc/hosts条目

解决sed匹配空格/制表符分隔的hosts条目替换问题

要让你的sed命令同时支持空格和制表符作为分隔符,只需要把原命令里的固定空格替换成匹配空格或制表符的正则表达式即可,以下是具体方案:

基础版(匹配单个空格/制表符)

直接将命令中的空格 替换为[ \t],这个表达式会匹配单个空格或者制表符:

sed 's/\(^.\+\)[ \t]\(.\+compute.internal\)/\1 othername \2/g' /etc/hosts

鲁棒版(匹配一个或多个连续分隔符)

如果你的/etc/hosts里可能存在多个连续的空格或制表符混合作为分隔符,建议用[ \t]+(+表示匹配前面的字符至少一次),这样能兼容更多场景:

sed 's/\(^.\+\)[ \t]\+\(.\+compute.internal\)/\1 othername \2/g' /etc/hosts

原地编辑文件

如果需要直接修改/etc/hosts文件而不是只输出结果,可添加-i参数(不同sed版本略有差异):

  • GNU sed(Linux系统):
    sed -i 's/\(^.\+\)[ \t]\+\(.\+compute.internal\)/\1 othername \2/g' /etc/hosts
    
  • BSD sed(macOS等系统):
    sed -i '' 's/\(^.\+\)[ \t]\+\(.\+compute.internal\)/\1 othername \2/g' /etc/hosts
    

效果示例

不管原条目用空格还是制表符分隔:

原条目(空格分隔):

10.80.0.4 host.compute.internal

原条目(制表符分隔):

10.80.0.4	host.compute.internal

替换后都会得到:

10.80.0.4 othername host.compute.internal

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 08:15:32