【发布时间】:2020-07-13 14:35:59
【问题描述】:
我有一个由多列和多行分隔的数据集选项卡:
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++) {$1=($i<$1)?$i:$1} print $1}'
有什么建议吗?
【问题讨论】:
-
我认为覆盖现有数据不是一个好主意,就像您正在做的那样
$1=(...)。为什么不直接使用单独的变量,如min和max并与它们进行比较?这在max方面有点棘手,但这将是一个有趣的编程问题供您解决。此外,您可以通过采用awk '$0 !~/^ID/{..code}' file形式来减少使用的进程数,祝您好运。