awk文字處理

2022-08-18 18:51:14 字數 1945 閱讀 2938

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...