我是linux的新手。命令需要帮助。我在linux中有具有以下值的文件:
2-1
2-10
2-11
2-12
2-2
2-3
1-1
1-10
1-11
1-2
1-3
1-9
需要的输出是23。1-和2-模式的最大值之和,即1- 11 和2- 12 中的11
发布于 2017-06-22 13:08:56
awk -F"-" 'BEGIN{a=0; b=0;} {if(int($1)==1 && int($2)>a){a=int($2)}; if(int($1)==2 && int($2)>b){b=int($2)}}END{print a+b}' file
产出:
23
发布于 2017-06-22 13:28:10
另一个使用awk
运算符的ternary
awk -v FS='-' '{m1=($1==1?(m1>$2?m1:$2):m1);m2=($1==2?(m2>$2?m2:$2):m2)}END{print m1+m2}' file
发布于 2017-06-22 14:09:14
排序+ awk管道:
sort -t- -k2 -n file | awk -F'-' '{a[$1]=$2}END{ print a[1]+a[2] }'
产出:
23
https://stackoverflow.com/questions/44699855
复制相似问题