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

如何使用awk结合for循环对二维矩阵多列进行采样?

awk批量提取固定步长列的解决方案

方法1:awk内部for循环直接生成列号

直接在awk脚本里用for循环遍历目标列号,不用手动罗列所有$n:

awk -F " " '{
    # 从900开始,每次加25,覆盖900到1875的40列
    for(i=900; i<=1875; i+=25){
        printf "%s ", $i
    }
    print ""
}' filename.txt > test.txt

如果不想手动计算最后一列的数值,也可以用循环次数控制,更灵活:

awk -F " " '{
    start=900; step=25; count=40
    for(i=0; i<count; i++){
        col = start + i*step
        printf "%s%s", $col, (i<count-1 ? " " : "\n")
    }
}' filename.txt > test.txt

改start(起始列)、step(步长)、count(提取列数)三个变量就能适配不同场景。

方法2:外部生成列号列表传给awk

先用seq命令生成目标列号的逗号分隔列表,再让awk按列表提取:

# 生成900到1875、步长25的列号,用逗号连接
cols=$(seq -s, 900 25 1875)
# 分割列号列表并循环输出对应列
awk -F " " -v cols="$cols" '{
    split(cols, arr, ",")
    for(i in arr){
        printf "%s%s", $arr[i], (i<length(arr) ? " " : "\n")
    }
}' filename.txt > test.txt

这种方法适合需要先确认列号列表的场景,生成的cols变量可通过echo $cols验证是否正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 03:55:23