awk文字處理
基於模式匹配檢查輸入文字,逐行處理並輸出
通常用在shell指令碼中,獲取指定的資料
單獨用時,可對文字資料做統計
一、語法格式
格式1:命令 | awk [選項] '[條件]'
格式2:awk [選項] '[條件]' 檔案..
若有多條語句,可用分號分隔
print是最常用的指令
# awk -f ";" '' /etc/passwd
root x
bin x
.. ..
二、常用命令選項
-f:指定分隔符,可省略(預設空格或tab位)
cat m.txt
11111111 caremi
222 it group
#awk'' m.txt
11111111
222#awk -f "r" '' m.txt
11111111 ta
222 it g
#df -ht /boot | tail -1 //第一行
#df -ht /boot | tail -1 | awk '' //第一行第六列
# head -5 /etc/passwd | awk -f:(分隔符可以緊挨-f) ''
三、awk內建變數
fs 儲存或設定字段分隔符,例如fs=":"
$n 指定分隔的第n個字段,如$1、$3分別表示第1、3列
$0 當前讀入的整行文字內容
nf 記錄當前處理行的字段個數(列數)
nr 記錄當前已讀入行的數量(行數)
fnr 儲存當前處理行在原文本內的序號(行號)
#awk '' m.txt
#awk '' m.txt //$nf表示每行最後乙個字段
#awk -f: '$1==environ["user"]' \
/etc/passwd //輸出當前使用者的uid資訊
四、awk處理的時機
1.行前處理,begin{}
讀入第一行文字之前的執行
一般用來初始化操作
2.逐行處理,{}
逐行讀入文字執行相應的處理
是最常見的編輯指令塊
3.行後處理,end{}
處理完最後一行文字之後執行
一般用來輸出處理結果
1-3可單獨使用,也可以一起使用
#awk 'begin ' //預處理不需要資料檔案
#awk 'begin/\;>=;<;<=
cat reg.txt
abcd xx
xxabcabcd xx
#awk 'nr==2' reg.txt //xx
#awk '$2!="xx"' reg.txt //xx,輸出第2列不是xx的行
#awk 'nf>=2' reg.txt //輸出含2個及以上欄位的行
abcd xx
abcabcd xx
(3)邏輯比較
&&:期望多個條件都成立;||:只要有乙個條件成立即滿足要求
#awk -f:'$3>=0&&3<2' \
/etc/passwd //列出uid小於2的使用者資訊
root 0
bin 1
#awk -f: '$3==1||$3==7' \
/etc/passwd //列出uid為1或7的使用者資訊
bin 1
halt 7
(4)運算子
+,-,*,/,%,++,--,+=,-=,*=,/=
#awk 'nr%2==1' reg.txt //輸出奇數行文字
abcd xx
abcabcd xx
#awk 'begin end' reg.txt //統計文字的總欄位個數
5#seq 200 | awk 'begin&&\
end' //計算能同時被3和13整除的整數個數
文字處理awk
awk是乙個強大的文字分析工具,相對於grep的查詢,sed的編輯,awk在其對資料分析並生成報告時,顯得尤為強大。簡單來說awk就是把檔案逐行的讀入,以空格為預設分隔符將每行切片,切開的部分再進行各種分析處理。實際上awk確實有自己的程式語言 樣式掃瞄和處理語言。awk 1.命令列方式 awk f...
awk文字處理
awk是一種程式語言,用於在linux環境中對文字資料進行處理 二 awk的兩種語法格式 awk options conmmand filenames awk options f awk script file filenames f 定義輸入字段分隔符,預設分隔符是空格或製表符 命令begin e...
awk進行文字處理
1 awk的內建變數 awk 所內建的字段變數及其涵意如下 字段變數 含義 0 一字串,其內容為目前 awk 所讀入的資料行.1 0 上第乙個欄位的資料.2 0 上第二個欄位的資料.其餘類推 內建變數 含義nf number of fields 為一整數,其值表 0上所存在的字段數目.nr numb...