概念:
awk是乙個資料處理工具!相較於sed是對一整行的處理 ,而awk則是比較傾向於 把一行分成多個欄位來處理
在linux 中常用的是gwak ,awk是gawk的鏈結檔案
awk語法格式:
awk [-f] 『begin 匹配規則 end』 filename
其中begin和end 是awk的關鍵字 因此必須大寫 ;兩個部分是可選的可以寫也可以不寫
(begin和end 都只執行一次)
awk的工作過程:
awk自定義變數
1、-v varname=value 變數
例如:2、在awk
例如:3、引用 命令列定義的變數
awk內建變數
$n 代表當前行的第n個字段
$0 代表當前行的全部文字
filename 當前輸入檔案的名字
fs 代表分隔符(預設是空格)
nf 表示字段數
nr 表示當前的行號
fnr 表示各檔案分別計數行號 (如果掃瞄多個檔案的行號用fnr會單獨統計不會連線在一起)
(如果列印偶數行 nr%2==0就可以了)
陣列是乙個包含一系列元素的集合
格式
abc[1]=」xiaohong」
abc[2]=」xiaolan」
abc就是陣列名 就是陣列的下標 「xiaohong」就是陣列的元素內容
(使用字串作下標要用雙引號)
刪除陣列元素
delete abc[1] 就是刪除abc陣列中下標為1的元素
awk中引用shell變數的方法
1 通過命令列引數定義變數時引用 awk v awk變數名 shell變數名 bin bash var4bash test awk v var4awk var4bash begin 2 在awk中直接引用,使用 var 注意使用前格式必須是先用單引號括住再用雙引號括住 bin bash var te...
shell中for的應用
root localhost hh.sh bin bash read p 請輸入乙個小於100的整數 aa if aa eq 1 then echo 和等於 aa sum 0 第乙個for的賦值 sum1 0 第二個for的賦值 elif aa gt 1 aa lt 100 then for i 1...
shell 之awk 關聯陣列高階應用
最近由於資料遷移過,有些使用者資訊需要再次確認下,也許資料量比較大,但是需要最終確認的比如說是使用者id和其對應的使用者積分數,這樣就會導致出現文字a 老的資料 文字b 新的資料 比如 1101 1231102 1111103 1451104 152 這是文字a.txt 文字b.txt如下 1101...