linux:三劍客老大awk(簡單用法)

概念說明: 模式識別和腳本編寫
執行原理: 按行處理文件信息, 根據匹配條件信息, 完成相應操作動作
語法結構: awk [參數] ‘模式信息(條件) {動作}’ 文件信息

參數:

參數 用途
-F 指定列分隔符
-v var=val 自定義變量賦值
-P(或–posix) 支持{}
-f 指定awk腳本文件

字段(列)

變量名 含義
$1 第一個字段
$2 第二個字段
$3 第三個字段
$NF 最後一個字段
$0 整行
NF 每行字段數
FS 輸入字段分隔符
OFS 輸出字段分隔符

記錄(行)

變量名 含義
NR 行號,記錄的數 awk當前處理着的,記錄的數
RS 輸入記錄(行)分隔符
ORS 輸出時候的分隔符
FNR 當前文件的讀入記錄號
創建環境:
cat >> awk_test.txt << EOF
Zhang  Dandan    41117397    :250:100:175
Zhang  Xiaoyu    390320151   :155:90:201
Meng   Feixue    80042789    :250:60:50
Wu     Waiwai    70271111    :250:80:75
Liu    Bingbing  41117483    :250:100:175
Wang   Xiaoai    3515064655  :50:95:135
Zi     Gege      1986787350  :250:168:200
Li     Youjiu    918391635   :175:75:300
Lao    Nanhai    918391635   :250:100:175	

顯示xiaoyu的姓氏和ID號碼

[root@yu zy]# awk 'NR==2{print $1,$3}'  awk_test.txt
Zhang 390320151

姓氏是zhang的人,顯示他的第二次捐款金額及他的名字

[root@yu zy]# awk  '$1~/Zhang/' awk_test.txt 
Zhang  Dandan    41117397    :250:100:175
Zhang  Xiaoyu    390320151   :155:90:201

顯示所有ID號碼最後一位數字是1或5的人的全名

[root@yu zy]# awk '$3~/1$|5$/' awk_test.txt
Zhang  Xiaoyu    390320151   :155:90:201
Wu     Waiwai    70271111    :250:80:75
Wang   Xiaoai    3515064655  :50:95:135
Li     Youjiu    918391635   :175:75:300
Lao    Nanhai    918391635   :250:100:175

顯示所有ID號碼最後一位數字不是1或5的人的全名

[root@yu zy]# awk '$3!~/[15]$/{print $1,$2,$3}' awk_test.txt
Zhang Dandan 41117397
Meng Feixue 80042789
Liu Bingbing 41117483
Zi Gege 1986787350

顯示Xiaoyu的捐款,每個捐款數值都有以$開頭, 如$110$220$330

[root@yu zy]# awk '$2~/Xiaoyu/{gsub(/:/,"$",$NF);print $NF}' awk_test.txt 
$155$90$201

可以實現數值運算 — 計算器

[root@yu zy]# awk 'BEGIN{print 2+3}'
5
[root@yu zy]# awk 'BEGIN{print 2-3}'
-1
[root@yu zy]# awk 'BEGIN{print 2*3}'
6
[root@yu zy]#  awk 'BEGIN{print 2^3}'
8
[root@yu zy]# awk 'BEGIN{print 2/3}'
0.666667
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章