1. 程式人生 > >Linux--awk命令的簡單學習

Linux--awk命令的簡單學習

Linux指令碼Shell命令的三大泰山北斗:grep sed awd
其中grep sed 命令處理是文字檔案中的行單位,而awd命令處理的是文字檔案中的列單位,這裡簡單記錄下awk命令的簡單學習。

  • 學生各科成績的文字檔案score.txt
~/python---> cat score.txt
name   Chinese English Math
aaa     80      90      88
bbb     77      92      95
ccc     69      88      98
ddd     74      80      79
  • 利用awk命令處理學生分數
#查詢單科分數,其中$0、$1、$2、$3、$4分別表示所有列、姓名列、Chinese列、English列、Math列
~/python---> awk '{print $1,$2}' score.txt
name Chinese
aaa 80
bbb 77
ccc 69
ddd 74
~/python---> awk '{print $1,$4}' score.txt
name Math
aaa 88
bbb 95
ccc 100
ddd 79
~/python---> awk '{print $0}' score.txt
name    Chinese English Math
aaa     80
90 88 bbb 77 92 95 ccc 69 88 100 ddd 74 80 79
#列印倒數最後一行,倒數第二行的列,可利用內建變數NF,NF表示總列數
~/python---> awk '{print NF}' score.txt #每行總列數
4
4
4
4
4
~/python---> awk '{print $NF}' score.txt #最後一列內容
Math
88
95
100
79
~/python---> awk '{print $(NF-1)}' score.txt #倒數第二列內容
English 90 92 88 80
  • 利用awk統計學生分數,求和or平均
#對第三列求和
~/python---> awk 'BEGIN{total=0}{total+=$3}END{print total}' score.txt
350
#求第三列平均分
~/python---> awk 'BEGIN{total=0}{total+=$3}END{print total/(NR-1)}' score.txt
87.5