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

如何重新排列数据文件的行?每4行组将末行移至行首

没问题,这几个方法可以完美解决你的文本行重排需求——把每4行一组的最后一行移到组开头,同时保留首行的文件元信息:

方法一:用awk快速处理(推荐)

awk是处理这类文本行操作的绝佳工具,一行命令就能搞定,直接在终端运行即可:

NR == 1 {print; next}
{lines[(NR-1)%4+1] = $0}
(NR-1)%4 == 0 {print lines[4]; print lines[1]; print lines[2]; print lines[3]}

简单解释:

  • NR == 1 {print; next}:专门保留第一行的文件信息,直接打印后跳过后续处理,避免被分组影响
  • {lines[(NR-1)%4+1] = $0}:从第二行开始,把每一行按组存入数组。这里的(NR-1)%4+1会自动把行号2-5对应数组索引1-4,行号6-9对应索引1-4,以此类推,完美实现每4行一组的分组逻辑
  • (NR-1)%4 == 0:当处理到每组的最后一行(比如原数据的line4、line8对应的行号5、9),就先打印数组里的第4个元素(原组最后一行),再依次打印前三个元素,正好是你要的顺序

你可以把这段代码保存成rearrange.awk,然后运行:

awk -f rearrange.awk 你的输入文件名.txt > 输出文件名.txt

方法二:用Python脚本处理(适合灵活扩展)

如果需要更灵活的控制(比如处理超大文件、后续要加其他逻辑),Python脚本是更好的选择:

def rearrange_lines(input_file, output_file):
    with open(input_file, 'r', encoding='utf-8') as f_in, open(output_file, 'w', encoding='utf-8') as f_out:
        # 先写入首行的文件信息
        first_line = f_in.readline()
        f_out.write(first_line)
        
        current_group = []
        for line in f_in:
            # 保留原行格式,去掉换行符避免重复写入
            clean_line = line.rstrip('\n')
            current_group.append(clean_line)
            
            # 每凑够4行就重排并写入
            if len(current_group) == 4:
                # 把组内最后一行移到开头,拼接剩下的三行
                rearranged_group = [current_group[-1]] + current_group[:-1]
                f_out.write('\n'.join(rearranged_group) + '\n')
                # 清空当前组,准备下一组
                current_group = []
        
        # 处理文件末尾可能剩余的不足4行的内容(如果有的话)
        if current_group:
            f_out.write('\n'.join(current_group) + '\n')

# 调用示例,替换成你的文件名
rearrange_lines('input.txt', 'output.txt')

简单解释:

  • 先读取并写入首行的文件元信息,确保它不参与分组
  • 逐行读取后续内容,每收集4行就组成一个小组
  • 对小组进行重排:把最后一行放到最前面,再拼接剩下的三行,写入输出文件
  • 最后处理可能剩余的不足4行的内容,避免丢失数据

如果需要去掉行尾的注释(比如! this line need to move up),可以在clean_line = line.rstrip('\n')后面加一行:

clean_line = clean_line.split('!')[0].strip()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:25:13