Shell-面试题

面试两次,都被问到了,整理一下

数据准备

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

你可能感兴趣的:(Shell-面试题)