如何通过Unix脚本将65000个产品码按999分组并格式化?
Unix脚本实现产品码分组格式化需求
需求概述
现有一个约65000行的文本文件,每行是一个产品码,需要将这些产品码按每组999个拆分,每个产品码添加单引号后用逗号分隔,最终输出格式示例:
'87453454','65778445',
脚本方案(awk实现,一次完成处理)
直接用awk即可完成所有操作,无需拆分后再合并,脚本如下:
awk '{ printf "\047%s\047,", $0 count++ if (count % 999 == 0) { printf "\n" } } END { if (count % 999 != 0) { printf "\n" } }' input.txt > output.txt
脚本说明
\047是单引号的ASCII转义写法,避免脚本中引号嵌套引发语法错误- 每读取一行产品码,直接格式化为
'产品码',的形式输出 - 用
count变量统计已处理行数,每满999行就输出换行符实现分组 END块处理最后一组不足999行的情况,确保输出末尾有换行
使用方法
- 将你的产品码文件命名为
input.txt(或替换脚本中的input.txt为实际文件名) - 在终端执行上述awk命令
- 处理后的结果会保存到
output.txt中
备选方案(拆分到单独文件)
如果需要将每组输出到独立文件,可结合split和xargs实现:
# 按999行拆分原文件,生成前缀为group_的小文件 split -l 999 input.txt group_ # 遍历拆分后的文件,逐个格式化内容 for file in group_*; do xargs -I {} echo "'{}'," < "$file" > "formatted_$file" done
该方案会生成多个formatted_group_xx文件,每个文件对应一组格式化后的产品码。
内容的提问来源于stack exchange,提问作者O_Athens
相关产品推荐
相关产品推荐

