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

如何用sed删除网址中连字符到首个点之间的内容?

解决sed删除网址中特殊接口名的问题

嘿,我来帮你搞定这个sed的问题!你之前用的sed 's/-.*^.//'之所以无效,是因为正则表达式的逻辑完全不对——.*会贪婪匹配所有内容,而且^是匹配行首的符号,根本没定位到你要删除的接口名部分。

正确的sed命令

你需要精准匹配从-开始到下一个.之间的所有字符,然后把这部分替换为空。用这个命令就可以完美解决:

sed 's/-[^.]*//'

命令逻辑解释

  • -:精准匹配网址里的连字符
  • [^.]*:这是反向字符集,表示匹配任意**不是.**的字符,*表示匹配零次或多次,刚好能覆盖INT1、INT2、INT这些不同格式的接口名,不会误删后面的域名部分

测试示例

把你的输入内容放到文件(比如urls.txt)里,执行命令后就能得到你想要的结果:

# 输入内容
aaaaaaa-INT1.aaaa.aaaa.com
bbbbbbb-INT2.bbbb.bbbb.com
ccccccc-INT.cccc.cccc.com

# 执行命令
sed 's/-[^.]*//' urls.txt

# 输出结果
aaaaaaa.aaaa.aaaa.com
bbbbbbb.bbbb.bbbb.com
ccccccc.cccc.cccc.com

进阶:直接修改原文件

如果你想直接修改原文件而不是只输出到终端,可以加上-i参数(原地编辑):

# Linux系统
sed -i 's/-[^.]*//' urls.txt

# macOS系统(需要额外加空字符串参数)
sed -i '' 's/-[^.]*//' urls.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:11:34