如何重复拼接文件内容并在每次循环时对最后一列数值自增
解决方案
你原有代码仅直接追加原文件完整内容,未修改每行最后一列数值,因此无法实现自增效果。可参考以下两种实现方式:
方式1:修改原有Shell循环逻辑
# 先清空输出文件,避免历史内容干扰 > out.txt # 请将{1..5}中的5替换为你需要的重复次数n for i in {1..5};do awk -v cur_cnt="$i" '{$NF=cur_cnt;print}' OFS="\t" file.txt >> out.txt done
参数说明:
-v cur_cnt="$i":将Shell循环的当前次数变量传入awk$NF:指代每行的最后一列OFS="\t":指定输出列分隔符为制表符,保持和原文件格式一致,若原文件用空格分隔可删除该参数
方式2:纯awk实现(仅单次读取文件,适合大文件/高重复次数场景)
# 请将-v n=5中的5替换为你需要的重复次数n awk -v n=5 ' { # 先缓存原文件所有行内容 line_cache[NR] = $0 } END{ # 按指定次数循环输出 for (count=1;count<=n;count++) { for (line_idx=1;line_idx<=NR;line_idx++) { $0 = line_cache[line_idx] $NF = count print } } }' OFS="\t" file.txt > out.txt
内容的提问来源于stack exchange,提问作者Sandeep Kumar
相关产品推荐
相关产品推荐

