awk
文本分析工具,把文件逐行的讀入,以空格為默認分隔符將每行切片,切開的部分再進行分析處理。
1. 基本用法
awk [選項參數(shù)] ‘pattern1{action1} pattern2{action2}...’ filename
pattern:表示AWK在數(shù)據(jù)中查找的內(nèi)容,就是匹配模式
action:在找到匹配內(nèi)容時所執(zhí)行的一系列命令
2. 選項參數(shù)說明
選項參數(shù) | 功能 |
-F | 指定輸入文件的分隔符 |
-v | 賦值一個用戶定義變量 |
案例實操
數(shù)據(jù)準備
[cda@hadoop102 datas]$ sudo cp /etc/passwd ./
搜索passwd文件以root關(guān)鍵字開頭的所有行,并輸出該行的第1列和第7列,中間以“,”號分割。
[cda@hadoop102 datas]$ awk -F: '/^root/{print $1","$7}' passwd
root,/bin/bash
注意:只有匹配了pattern的行才會執(zhí)行action
只顯示/etc/passwd的第一列和第七列,以逗號分割,且在所有行前面添加列名user,shell在最后一行添加"good,/bin/learn"。
[cda@hadoop102 datas]$ awk -F : 'BEGIN{print "user, shell"} {print $1","$7} END{print "good,/bin/learn"}' passwd
user, shell
root,/bin/bash
bin,/sbin/nologin
。。。
cda,/bin/bash
good,/bin/learn
注意:BEGIN 在所有數(shù)據(jù)讀取行之前執(zhí)行;END 在所有數(shù)據(jù)執(zhí)行之后執(zhí)行。
將passwd文件中的用戶id(第三列)增加數(shù)值1并輸出
[cda@hadoop102 datas]$ awk -v i=1 -F: '{print $3+i}' passwd
2
3
4
5








暫無數(shù)據(jù)