bash - 如何在两列中分别打印两个函数的输出 - Bash 脚本

标签 bash

我正在尝试创建一个 bash 脚本来计算文本文件的行和列的平均值和中位数。我有平均和中值工作的函数,但是我正在尝试格式化行的输出(列格式很好)。

这就是我想要的:

    Averages:   Medians:
    1           1
    5           5
    7           7
    5           6
    3           3
    6           6

但是我的代码输出当前是这样做的:

    Averages:   Medians:
    1
    5
    7
    5
    3
    6
    1
    5
    7
    6
    3
    6

我目前拥有的代码是:

    if [[ $1 == -r* ]]
    then
        echo "Averages:    Medians"
        avg_nums $INPUT_FILE #calls average function on the file
        find_median $INPUT_FILE #calls median function
    elif... 
      #block of code for columns which works correctly.   
    fi

我尝试过的另一件事(我的老师建议的)是将平均值和中位数的值存储到临时变量中,然后在准备好时将其全部打印出来。它也不起作用。我为此所做的是:

    #average function
    tempAvg+="$avg" #append the new value of average to a global var
    .
    .
    #median function
    tempMed+="${arr[$medIndex]}" #append the new value of median to a global var

然后在下面调用它

    if [[ $1 == -r* ]]
    then
        echo "Averages:    Medians"
        printf "%s\t%s\n" "$tempAvg" "$tempMed"
    elif... 
      #block of code for columns which works correctly.   
    fi

其输出为:

    Averages:    Medians:
    157536   157636

很明显我尝试过的方法都不起作用。我也是 bash 脚本新手,所以你知道。有人对如何让它发挥作用有任何建议吗?我是否以错误的方式处理这个问题?谢谢。

编辑:我的输入文件如下(用制表符分隔)

     1   1   1   1   1
     9   3   4   5   5
     6   7   8   9   7 
     3   6   8   9   7
     3   4   2   1   4
     6   4   4   7   7

最佳答案

您可以使用粘贴

paste <(avg_nums ...) <(find_medians ...) | sed '1i\Averages:\tMedians:'

关于bash - 如何在两列中分别打印两个函数的输出 - Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33181533/

相关文章:

linux - 基本名称的多个文件

linux - 使用需要输入的命令在脚本内部执行 sudo (bash)

mysql - Bash + MySQL -d 反引号问题

bash - 使用 extglob 的案例陈述

sed - .bash_profile sed :\1 not defined in the RE

将音乐从一个目录转换到另一个目录的 Bash 脚本

linux - 如何在 shell 脚本运行时启用某些命令

bash - 查找两个文件之间的属性增量

bash - 找不到文件时for循环错误执行

linux - sed 行将周围的冒号更改为 bash 中的点