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

Sed/Bash新手求助:从字符串提取指定域名并输出到文件

用sed/bash提取双引号内的域名

嘿,作为sed/bash新手,想要从那串混杂的字符串里精准抠出双引号里的域名(像.com/.info/.xyz这类后缀的),我给你俩实用的方案,上手简单还靠谱~

方案一:grep + sed 组合拳

这个组合分工明确,grep负责把所有双引号里的内容抓出来,sed再筛选出符合后缀的域名,还能自动去掉双引号:

# 假设你的源内容存在input.txt文件里,执行以下命令
grep -o '"[^"]*"' input.txt | sed -n '/\.\(com\|info\|xyz\)$/s/"//gp' > output_domains.txt

命令拆解:

  • grep -o '"[^"]*"':-o参数让grep只输出匹配到的部分,"[^"]*"匹配所有被双引号包裹的内容(从双引号开始,到下一个双引号结束,中间不含双引号)。
  • sed -n '/\.\(com\|info\|xyz\)$/s/"//gp':
    • -n表示只输出我们指定的行;
    • /\.\(com\|info\|xyz\)$/用来匹配以.com/.info/.xyz结尾的内容;
    • s/"//g把内容里的双引号全部去掉;
    • p打印最终筛选后的结果。
  • > output_domains.txt:把结果写入到新文件output_domains.txt里。

方案二:纯sed单命令处理

如果你不想用grep,纯sed也能搞定,还能顺便去重(如果有重复域名的话):

sed -n 's/.*"\([^"]*\.\(com\|info\|xyz\)\)".*/\1/gp' input.txt | sort -u > output_domains.txt

命令拆解:

  • sed -n 's/.*"\([^"]*\.\(com\|info\|xyz\)\)".*/\1/gp':用替换模式,找到字符串里符合后缀的双引号内容,提取出括号里的域名部分;
  • sort -u:对结果排序并去掉重复的域名(可选,根据你的需求决定要不要加)。

测试效果

拿你给的源字符串测试,运行命令后,output_domains.txt里的内容就是:

domain.com
anotherdomain.info
domain.xyz

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:04:39