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

如何按行数分割文件并依据首列值重命名?求awk解决方案

按4行分组并以首行首列命名分割文件的解决方案

我有一个需要按每4行分割的文件,每组4行的格式如下:

sample_id   145 WORD    2847    42  301M    =   2086    -1062
ACAAAAAAGAAAAAATGAGTTACCGTACTGTCTGTGAGTGATGCATACTTTT
  |||||||||||||| ||| || ||||||  |||| |||||||||| ||||
TTAAAAAAGAAAAAATCAGTAACAGTACTGGATGTGGGTGATGCATATTTTT

目前我使用命令:split -l 4 file.txt,希望将输出文件以每组首行第一列的值命名为xxx.txt,请问该如何实现?是否有awk解决方案?

awk实现方案

可以用awk直接完成这个需求,命令如下:

awk 'NR%4==1{close(f); f=$1".txt"} {print > f}' file.txt

命令解释

  • NR%4==1:当处理到第1、5、9…行(每组的首行)时触发后续操作
  • close(f):关闭之前打开的文件句柄,避免因同时打开过多文件报错
  • f=$1".txt":取当前首行的第一列值,拼接.txt作为输出文件名
  • {print > f}:将当前行写入目标文件f

补充说明

如果存在多组首行第一列值重复的情况,后面的组内容会覆盖前面的文件。要避免覆盖,可以给文件名加上序号:

awk 'NR%4==1{close(f); cnt++; f=$1"_"cnt".txt"} {print > f}' file.txt

这样重复的标识会生成sample_id_1.txt、sample_id_2.txt这类带编号的文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 07:09:38