面试两次,都被问到了,整理一下
数据准备
vim data
111 1
222 3
111 4
111 5
222 2
333 3
444 4
333 3
计算指定列的所有值得和
例如:求取第二列所有值得和
cat data | awk '{sum+=$2}END{print sum}'
# 结果
25
统计文本行数得方法
#方法1
awk '{print NR}' data | tail -n1
#方法2
wc -l data
# 方法3
wc -l data | awk '{print $1}'
把第一列相同的第二列值相加
cat data | awk '{a[$1]+=$2}END{for(i in a) printf "%s %d\n",i,a[i]}'
把第一列相同的第二列值相加,并按照综合降序排列
降序排列:- n -r -k2(第二列的值)
cat data | awk '{a[$1]+=$2}END{for(i in a) printf "%s %d\n",i,a[i]}' | sort -n -r -k2
将数据按照第二列值降序排列
sort -n -r -k2 data