Bash脚本:为重复前缀条目添加数字后缀的实现方法
解决方案
可以用Bash的关联数组统计每个前缀的出现次数,逐行处理时动态生成带编号的输出,这种方法内存占用低,适合处理大规模数据。
完整脚本
#!/bin/bash # 初始化关联数组用于计数 declare -A count while IFS= read -r line; do # 提取第一个点号前的前缀 prefix="${line%%.*}" # 对应前缀的计数加1 ((count[$prefix]++)) # 根据计数输出结果 if [[ ${count[$prefix]} -gt 1 ]]; then echo "$prefix ${count[$prefix]}" else echo "$prefix" fi done <<< "$list"
效果验证
用你提供的输入测试:
输入:
apple.LONG_UUID.BLAH.BLAH orange apple.ANOTHER_UUID chair.01.AB
执行脚本后输出:
apple 1 orange apple 2 chair
完全符合期望。
说明
- 关联数组
count会记录每个前缀出现的次数,每处理一行就更新对应前缀的计数 - 逐行处理的方式不需要一次性加载所有数据到内存,适合处理超大文件或数据集
- 所有原始行唯一的特性不影响逻辑,我们只关心前缀的重复情况
内容的提问来源于stack exchange,提问作者sloppy
相关产品推荐
相关产品推荐

