Linux控制台:为split拆分的多文件插入连续编号并格式化内容
实现方案
你之前的命令出错核心原因是paste -sd 'h'仅会用单个字符h拼接所有行,不会给每组内容补后缀、也不会自动加分隔空格,最终导致字符错位出现0h0的异常格式。
直接执行下面的shell脚本即可批量完成所有分片的格式处理,不需要依赖额外工具:
idx=1 for file in 1_split.txt[a-z][a-z]; do # 处理分片内容:每2个字符为一组追加h,用空格分隔 formatted=$(awk '{ res = "" len = length($0) for (i=1; i<=len; i+=2) { res = res substr($0, i, 2) "h " } sub(/ $/, "", res) print res }' "$file") # 按要求写入内容到原文件 printf "parts:\n%d=%s\n" "$idx" "$formatted" > "$file" idx=$((idx+1)) done
脚本说明
- 遍历顺序和
split生成的文件排序完全一致,从1_split.txtaa到1_split.txtbg自动匹配,编号从1连续递增到33,不需要手动调整 - 处理逻辑严格按照要求:每个分片内每2个字符(1字节)为单位,后面追加
h后缀,单位之间用空格分隔,自动删除末尾多余空格 - 默认直接覆盖原分片文件,如果需要保留原文件,把
> "$file"修改为> "${file}.processed"即可,处理完成后会生成带.processed后缀的新文件,确认格式无误后再替换原文件 - 最后一个分片(192个0)会自动按96组处理,不会出现格式错误
注意:执行前如果担心原文件损坏,可以先创建备份目录备份所有分片:mkdir -p ./split_backup && cp 1_split.txt* ./split_backup/
内容的提问来源于stack exchange,提问作者Jle
相关产品推荐
相关产品推荐

