Linux awk命令詳解

2021-09-06 15:48:15 字數 2709 閱讀 4942

awk用於格式化報文或者從檔案中抽取資料報.

1.$awk '' gefforey.txt | tee gefforey.doc

該命令將在螢幕輸出gefforey.txt檔案內容並將其內容複製到gefforey.doc檔案中.

2.$awk -f: '' gefforey.log

該命令以:為單位讀取gefforey.log檔案中第一列內容.

3.$awk 'begin ' gefforey.txt

該 命令將在螢幕首先輸出"name   belt",第二行輸出"------------",並在輸出檔案內容的時候,每列之間間隔乙個tab位.可以在print語句之後加上end ,那麼將會在檔案內容輸出結束的時候列印"end of output".

該命令顯示gefforey.txt檔案中以空格分隔的第二列字串是"baidu"的所有行.

5.$awk '' gefforey.txt

該命令判斷如果某行第二列字串為"baidu",則列印出該行.

6.$awk '' gefforey.txt

該命令顯示判斷如果某行第二列值小於第三列值,則列印該行.awk的條件操作符有:

< 小於,> = 大於等於,< = 小於等於,~ 匹配正規表示式,= = 等於,!~ 不匹配正規表示式,!= 不等於

7.$awk '' gefforey.txt

該命令判斷如果某行第二列值為"google1"並且第三列值為"google2",則列印出該行.awk的邏輯表示式有:&& and,|| o r,! 非.

8.$awk ' end' gefforey.txt

該命令會輸出瀏覽記錄的域個數和已讀的記錄數,並在輸出結尾列印檔案名.awk內建的變數有:

a r g c 命令列引數個數

a r g v 命令列引數排列

e n v i r o n 支援佇列中系統環境變數的使用

filename a w k瀏覽的檔名

f n r 瀏覽檔案的記錄數

f s 設定輸入域分隔符,等價於命令列- f選項

n f 瀏覽記錄的域個數

n r 已讀的記錄數

o f s 輸出域分隔符

o r s 輸出記錄分隔符

r s 控制記錄分隔符

(附:1.n f的乙個強大功能是將變數$ p w d的返回值傳入a w k並顯示其目錄。這裡需要指定域分隔

符/.命令為:echo $pwd | awk -f/ '';

2.顯示檔名,命令為:echo "/usr/local/etc/rc.sybase" | awk -f/ ''.

9.$awk '' gefforey.txt

該命令將第一列的值賦給變數name,第三行的值賦給變數belt,並列印語句.awk允許在語句中進行賦值操作,賦值操作符有:=, +=, *=, / =, %=, ^ = .

10.$awk 'gsub(/111/,222) ' gefforey.txt

該命令將檔案中所有包含111的數字替換為222,awk的內建函式有:

g s u b ( r, s ) 在整個$ 0中用s替代r

g s u b ( r, s , t ) 在整個t中用s替代r

i n d e x ( s , t ) 返回s中字串t的第一位置

l e n g t h ( s ) 返回s長度

m a t c h ( s , r ) 測試s是否包含匹配r的字串

s p l i t ( s , a , f s ) 在f s上將s分成序列a

s p r i n t ( f m t , e x p ) 返回經f m t格式化後的e x p

s u b ( r, s ) 用$ 0中最左邊最長的子串代替s

s u b s t r ( s , p ) 返回字串s中從p開始的字尾部分

s u b s t r ( s , p , n ) 返回字串s中從p開始長度為n的字尾部分

g s u b函式有點類似於s e d查詢和替換。它允許替換乙個字串或字元為另乙個字串或字

符,並以正規表示式的形式執行。第乙個函式作用於記錄$ 0,第二個g s u b函式允許指定目標,

然而,如果未指定目標,預設為$ 0。

i n d e x(s,t)函式返回目標字串s中查詢字串t的首位置。l e n g t h函式返回字串s字元

長度。m a t c h函式測試字串s是否包含乙個正規表示式r定義的匹配。s p l i t使用域分隔符f s將

字串s劃分為指定序列a。s p r i n t函式類似於p r i n t f函式(以後涉及),返回基本輸出格式f m t的

結果字串e x p。s u b(r,s)函式將用s替代$ 0中最左邊最長的子串,該子串被( r)匹配。

s u b(s,p)返回字串s在位置p後的字尾。s u b s t r(s,p,n)同上,並指定子串長度為n。

11.$echo "65" | awk ''

該命令管道輸出65到awk,並觀察其ascii字元.awk的printf函式格式如下:

% c a s c i i字元

% d 整數

% e 浮點數,科學記數法

% f 浮點數,例如(1 2 3 . 4 4)

% g a w k決定使用哪種浮點數轉換e或者f

% o 八進位制數

% s 字串

% x 十六進製制數

awk命令也許是linux系統中最為複雜的命令,需要好好的練習!

Linux awk命令詳解

3.awk的執行過程 1 awk script的組成 awk script可以由一條或多條awk cmd組成,兩條awk cmd之間一般以newline分隔 awk cmd由兩部分組成 awk pattern awk script可以被分成多行書寫,必須確保整個awk script被單引號括起來。2...

linux awk命令詳解

awk 儘管操作可能會很複雜,但語法總是這樣,其中 pattern 表示 awk 在資料中查詢的內容,而 action 是在找到匹配內容時所執行的一系列命令。花括號 不需要在程式中始終出現,但它們用於根據特定的模式對一系列指令進行分組。pattern就是要表示的正規表示式,用斜槓括起來。awk 語言...

linux awk命令詳解

awk是乙個強大的文字分析工具,相對於grep的查詢,sed的編輯,awk在其對資料分析並生成報告時,顯得尤為強大。簡單來說awk就是把檔案逐行的讀入,以空格為預設分隔符將每行切片,切開的部分再進行各種分析處理。awk有3個不同版本 awk nawk和gawk,未作特別說明,一般指gawk,gawk...