file
222.247.0.0/18,222.247.0.0/17,222.247.0.0/13,222.247.0.0/14
123.46.0.0/19,123.46.0.0/17,123.46.0.0/13,123.46.0.0/14
要求:查找每行当中最大的那个数字,然后在最前面加上*号。
处理
awk -F',' '{for(i=1;i<=NF;i++)if(m<$i){m=$i;n=i};print gensub($n,"*"$n,1)}' file
解析:
首先要找到最大值,m存取的是最大值,然后n存放的是位置,最后进行替换。注意这里用的是gensub进行的替换,没有用gsub或者是sub,因为这两个返回的是匹配的个数而不是替换后的字符串。但是gensub返回的是替换后的字符串。