awk備忘,強大的awk

2021-08-31 02:48:49 字數 1561 閱讀 9126

越來越發現awk的強大,做了實驗,做了總結 備忘!!

/**在linux shell中呼叫awk  (awk '******x'  ******x即為awk命令,命令必須包含在單引號中,至少雙引號都不行)**/

方法一:awk -f '%' 'nr==7,nr==15 '  

方法二:awk ' nr==7,nr==15 '

:設定awk分隔符

nf:顯示域的個數(不是分隔符數,一般應該是分隔符數加1)

# cat test1.txt

aa bb c

# cat test1.txt | awk ''

nr==7,nr==15:第七行到第十五行 (貌似只能設兩個,設定三個會報錯 如:nr==7,nr==15,nr==20)

注意:nr==7,nr==15 要寫在一行裡,中間不能有分號

print:列印時會換行,printf:列印時不會換行 (還沒弄明白為什麼)

/**awk顯示第5列有a,l或like的所有列 **/

awk '$5~ /[a,l,like]/  ' tmp.txt 

/**awk顯示第5列不包含a或l的所有列 **/

awk '$5!~'/[a,l]/' ' tmp.txt 

/**列印行號,ofs在$1,$2之間以"-"分隔**/

awk 'ofs="-" ' tmp.txt

nr:行號

ofs:將需要輸出資料的分隔符

# cat test1.txt

aa bb c

# cat test1.txt |awk ' ofs="-" '

aa bb c

--因為沒有分隔符,也沒分域,相當於只有乙個域,所以沒打出"-"

#cat test1.txt |awk ' ofs="-" '

aabbc

--不帶分隔符打出各域

# cat test1.txt |awk ' ofs="-" '

aa-bb-c

--有了逗號,所以中間要有分隔符

/**利用begin和end列印頁首頁尾(支援轉義)**/

# awk 'begin end' test1.txt 

begin

begin2

aa bb c

aa bb c

end/**把test1.txt前面加上行號,追加到tt22中**/

#awk '' test1.txt

#cat tt22 

1 aa bb c

/**管道輸出並執行shell命令**/

awk '' tmp.txt 

# cat test2.txt 

# awk '' test2.txt 

/**從檔案讀取awk命令並執行: awk -f awk指令碼名 目標檔案 **/

# cat test.awk 

begin

# cat test2.txt 

# awk -f test.awk test2.txt    

1-3-

2-/**把第一豎排變成橫排**/

#awk '' test2.txt  

1,3,2,

強大的awk命令

awk 用法 awk pattern 變數名 含義 argc 命令列變元個數 argv 命令列變元陣列 filename 當前輸入檔名 fnr 當前檔案中的記錄號 fs 輸入域分隔符,預設為乙個空格 rs 輸入記錄分隔符 nf 當前記錄裡域個數 nr 到目前為止記錄數 ofs 輸出域分隔符 ors ...

awk筆記備忘

awk pattern 0變數是指整條記錄,1表示當前行的第乙個域,2表示當前行的第二個域,n當前記錄的第n個域,欄位間由fs分隔,每行按 fs 字段分隔符 預設是空格或tab cat 1.txt beth 4.00 0 dan 3.75 0 kathy 4.00 10 mark 5.00 20 m...

awk 入門 awk入門,強大的文字分析工具

awk 入門 awk是用於unix和類unix系統的強大文字解析工具,但是由於它具有可用於執行常見解析任務的程式設計功能,因此它也被視為一種程式語言。您可能不會使用awk開發下乙個gui應用程式,並且它可能不會代替您的預設指令碼語言,但是它對於特定任務而言是強大的實用程式。這些任務可能是令人驚訝的多...