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

能否使用awk实现行与列对应元素的乘法运算?附输入输出示例

当然可以用awk实现这个乘法运算需求!

先帮你理清楚对应的运算逻辑:
你的输入序列是0 1 2 3 2 1 3,对应到你提到的变量:

  • A12 = 输入第2个元素(1),A13 = 输入第3个元素(2),A14 = 输入第4个元素(3)
  • A21 = 输入第5个元素(2),需要计算A21*A12、A21*A13、A21*A14 → 21=2,22=4,2*3=6
  • A31 = 输入第6个元素(1),计算A31*A12、A31*A13、A31*A14 →11=1,12=2,1*3=3
  • A41 = 输入第7个元素(3),计算A41*A12、A41*A13、A41*A14 →31=3,32=6,3*3=9

接下来把这些计算结果按你需要的顺序拼接,就能得到期望的输出。下面是实现这个逻辑的awk脚本:

{
    # 把输入的每个元素存入数组,索引从1开始对应位置
    arr[1] = $1; arr[2] = $2; arr[3] = $3; arr[4] = $4;
    arr[5] = $5; arr[6] = $6; arr[7] = $7;
    
    # 提取A1系列的固定值
    A12 = arr[2]; A13 = arr[3]; A14 = arr[4];
    
    # 计算各组乘积
    # A21相关乘积
    p21_12 = arr[5] * A12;
    p21_13 = arr[5] * A13;
    p21_14 = arr[5] * A14;
    
    # A31相关乘积
    p31_12 = arr[6] * A12;
    p31_13 = arr[6] * A13;
    p31_14 = arr[6] * A14;
    
    # A41相关乘积
    p41_12 = arr[7] * A12;
    p41_13 = arr[7] * A13;
    p41_14 = arr[7] * A14;
    
    # 按要求的顺序输出所有元素,用空格分隔
    printf "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n",
        arr[1], arr[2], arr[3], arr[4], arr[5],
        p21_12, p21_13, p21_14,
        arr[6],
        p31_12, p31_13, p31_14,
        arr[7],
        p41_12, p41_13, p41_14;
}

运行方式

把上面的代码保存为calc.awk,然后用管道传入输入数据:

echo "0 1 2 3 2 1 3" | awk -f calc.awk

或者直接用单行命令运行:

echo "0 1 2 3 2 1 3" | awk '{arr[1]=$1;arr[2]=$2;arr[3]=$3;arr[4]=$4;arr[5]=$5;arr[6]=$6;arr[7]=$7;A12=arr[2];A13=arr[3];A14=arr[4];p21_12=arr[5]*A12;p21_13=arr[5]*A13;p21_14=arr[5]*A14;p31_12=arr[6]*A12;p31_13=arr[6]*A13;p31_14=arr[6]*A14;p41_12=arr[7]*A12;p41_13=arr[7]*A13;p41_14=arr[7]*A14;printf "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n",arr[1],arr[2],arr[3],arr[4],arr[5],p21_12,p21_13,p21_14,arr[6],p31_12,p31_13,p31_14,arr[7],p41_12,p41_13,p41_14}'

运行后就能得到你期望的输出:

0 1 2 3 2 2 4 6 1 1 2 3 3 3 6 9

如果后续输入的结构有调整(比如变量对应位置变化),只需要修改数组索引和输出的顺序即可,灵活性很强。

内容的提问来源于stack exchange,提问作者T.ALC

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:54:01