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

如何将文件内容按FQDN前缀拆分至对应命名的新文件

按FQDN前缀拆分文件内容

需求说明

现有输入文件(假设名为input.txt)内容如下:

serverA.domain.com plan_name: PlanA
serverB.domain.com plan_name: PlanC
serverA.domain.com plan_name: PlanB
serverB.domain.com plan_name: PlanD

需要实现:提取每行第一列FQDN的第一部分(如serverA、serverB)作为文件名,将整行内容追加到对应文件中。最终生成的文件内容示例:

serverA文件:

serverA.domain.com plan_name: PlanA
serverA.domain.com plan_name: PlanB

serverB文件:

serverB.domain.com plan_name: PlanC
serverB.domain.com plan_name: PlanD

解决方案

方法1:用awk实现(简洁高效)

之前用awk失败大概率是分隔符设置问题,直接指定分隔符后即可完成需求:

awk -F'[ .]' '{print >> $1; close($1)}' input.txt
  • -F'[ .]':设置分隔符为空格或点,将serverA.domain.com拆分为serverA、domain、com,$1就是目标前缀
  • print >> $1:把整行内容追加到以$1命名的文件
  • close($1):处理完一行就关闭文件,避免大文件场景下耗尽文件句柄

方法2:用bash循环实现

如果想用for循环逻辑,可逐行读取处理:

while IFS= read -r line; do
    fqdn=$(echo "$line" | awk '{print $1}')
    prefix=$(echo "$fqdn" | cut -d. -f1)
    echo "$line" >> "$prefix"
done < input.txt
  • while IFS= read -r line:安全读取每行内容,保留空格和特殊字符
  • fqdn=$(...):提取每行第一列的完整FQDN
  • prefix=$(...):按点分隔FQDN,取第一部分作为文件名
  • echo "$line" >> "$prefix":将当前行追加到对应文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 04:32:33