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

如何按多行交替模式将多行列文件分割为两个输出文件?

按每n行交替分割文件到两个输出文件的解决方案

我来分享几个简单好用的方法,帮你实现把输入文件按每n行一组,交替存入out1和out2的需求,完全匹配你给出的示例场景。

方法1:用awk(最简洁高效)

awk处理这类文本分割需求简直是神器,一行命令就能搞定。比如当你需要n=2时,直接运行:

awk -v n=2 'NR%(2*n) <=n {print > "out1"; next} {print > "out2"}' file

逻辑解释:

  • -v n=2:把分组行数n传递给awk脚本,你可以根据需要改成任意数字(比如n=3就改成-v n=3)
  • NR是awk内置的当前行号变量,NR%(2*n)计算行号除以2n的余数
    • 如果余数≤n,说明这行属于第1、3、5...组,写入out1
    • 否则属于第2、4、6...组,写入out2

用你给出的示例文件测试,运行后out1会包含前两行和最后两行,out2包含中间两行,完全符合预期。

方法2:用基础shell命令(适合不熟悉awk的情况)

如果对awk不太熟悉,用split+循环的组合也能实现,步骤更直观:

# 设置分组行数n
n=2
# 先清空输出文件(避免追加旧内容)
> out1
> out2
# 把输入文件分割成每个n行的临时文件,前缀为temp_part_
split -l "$n" file temp_part_
# 循环处理每个临时文件,交替合并到out1和out2
i=1
for part in temp_part_*; do
    if (( i % 2 == 1 )); then
        cat "$part" >> out1
    else
        cat "$part" >> out2
    fi
    ((i++))
    # 删除临时文件
    rm "$part"
done

逻辑解释:

  • split -l n:把file分割成多个小文件,每个文件刚好n行
  • 循环遍历这些小文件,奇数序号的文件合并到out1,偶数序号的合并到out2
  • 最后清理临时文件,避免占用空间

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:40:52