从每一行中获取最大值和最小值 (unix)

Get the max and min values from each row (unix)

我有一个由多列和多行分隔的数据集选项卡:

ID      v1    v2     v3     v4     v5    v6     v7     v8     
CR_A    2.0657669  1.8515346 2.0644004   0.58573062  2.4229691  1.0294456   1.640186   4.1076807
LR_57   0.83709141 1.097222  1.1135779   0.84598841  1.4768965  0.82643804  1.8255887  2.9050872
CR_t1t  1.3008098  1.0157919 0.76411066 -0.56374447  1.4978799  0.016129955 1.7124357  2.4607684

我想要每行的最小值和最大值。例如:

CR_A     0.58573062  4.1076807
LR_57    0.84598841  2.9050872
CR_t1t   -0.56374447 2.4607684

我只能计算出最小值:

cat file | grep -v ID | awk '{for (i=1;i<=NF;i++) {=($i<)?$i:} print }'

有什么建议吗?

我会将所有内容放入一个新文件

awk  'NR>1{a=0; b=0; for (i=1;i<=NF;i++) if ($i < a || i == 1)a = $i; else if($i > b|| i == 1)b = $i; print ,a, b}' test.txt > new_file2

NR>1 跳过列名的第一行。遍历每一行,保存最大值和最小值并打印名称、最小值和最大值。希望对你有帮助。

我的输出。你上面的期望输出是错误的,因为行 CR_t1t 的最小值不是你写的 1.7.1234 但实际上是 2.4607684.

CR_A 0.58573062 4.1076807
LR_57 0.82643804 2.9050872
CR_t1t -0.56374447 2.4607684
D10 -0.4515 2.2971