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

使用Shell脚本批量生成含递增字段的重复记录

批量生成递增字段的CSV记录

问题背景

现有文件abc.txt,内容如下:

ID, date, timestamp, count, idcount, unit, code, Pcode, ccode, bid, vcode

12345432,10-11-2011,11:11:12.555,0,0,XVC_AS,12,14,19,123454323,qweds

需要编写Unix Shell脚本,生成指定数量(如1000条)的记录,要求仅ID、Pcode、ccode三个字段逐行递增,其余字段保持不变。输出示例如下:

12345432,10-11-2011,11:11:12.555,0,0,XVC_AS,12,14,19,123454323,qweds

12345433,10-11-2011,11:11:12.555,0,0,XVC_AS,12,15,20,123454323,qweds

12345434,10-11-2011,11:11:12.555,0,0,XVC_AS,12,16,21,123454323,qweds
...

解决方案

使用awk即可高效实现字段递增和批量生成,以下是完整脚本:

脚本代码

# 设置要生成的总记录数,按需修改
TOTAL_RECORDS=1000

awk -v total=$TOTAL_RECORDS '
BEGIN {
    FS = OFS = ","  # 设置输入输出分隔符为逗号
}
# 打印表头行
NR == 1 {
    print
    next
}
# 跳过空行(如果原始文件有)
NR == 2 && $0 ~ /^$/ {
    next
}
# 处理原始数据行,生成批量记录
NR == 2 {
    # 保存三个字段的初始值
    base_id = $1
    base_pcode = $8
    base_ccode = $9
    
    # 打印第一条原始记录
    print
    # 循环生成剩余的total-1条记录
    for(i=1; i < total; i++){
        # 递增指定字段
        $1 = base_id + i
        $8 = base_pcode + i
        $9 = base_ccode + i
        # 先打印空行分隔,再打印记录(匹配示例格式)
        print ""
        print
    }
}
' abc.txt > generated_records.csv

代码说明

  1. 变量传递:通过-v total=$TOTAL_RECORDS将Shell中定义的总记录数传入awk
  2. 分隔符设置:FS=OFS=","确保输入输出都以逗号作为分隔符,保证CSV格式正确
  3. 表头处理:直接打印原始文件的表头行
  4. 空行跳过:跳过原始文件中表头和数据行之间的空行(如果存在)
  5. 字段递增逻辑:保存初始字段值后,循环中对ID、Pcode、ccode分别累加循环变量i,生成新记录
  6. 格式匹配:每条新记录前打印空行,与示例输出的格式一致

使用方法

  1. 修改TOTAL_RECORDS的值为你需要的记录数量(如1000)
  2. 运行脚本,生成的记录会保存到generated_records.csv文件中;若要直接在终端查看,可删除末尾的> generated_records.csv

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 02:10:17