从每一行中获取最大值和最小值 (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
我有一个由多列和多行分隔的数据集选项卡:
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