shell中的awk應用

2021-10-14 09:29:12 字數 1182 閱讀 1625

概念:

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