Linux系統命令三劍客之 awk

2021-09-20 22:28:29 字數 2613 閱讀 4347

命令名稱:awk

作用:

對文字和資料進行處理

詳細說明:

awk 是一種程式語言,用於在linux/unix下對文字和資料進行處理。

資料可以來自標準輸入(stdin)、乙個或多個檔案,或其它命令的輸出。

它在命令列中使用,但更多是作為指令碼來使用。awk有很多內建的功能,

比如陣列、函式等,這是它和c語言的相同之處,靈活性是awk最大的優勢。

語法格式:

awk [options] 'scripts' var=value filename

常用引數:

-f 指定分隔符(可以是字串或正規表示式)

-f 從指令碼檔案中讀取awk命令

-v var=value 賦值乙個使用者定義變數,將外部變數傳遞給awk

awk 指令碼基本結構:

awk 'begin pattern end' filename

乙個awk 指令碼通常由begin語句+模式匹配+end語句三部分組成,這三部分都是可選項

工作原理:

第一步執行begin 語句

第二步從檔案或標準輸入讀取一行,然後再執行pattern語句,逐行掃瞄檔案到檔案全部被讀取

第三步執行end語句

echo "hello world" | awk 'begin end'

welcome

2017-08-08

echo -e  "hello world" | awk 'begin end'

welcome

hello world

2017-08-08

#不加print引數時預設只列印當前的行

[root@mingongge ~]# echo |awk ''

hello nihao mingongge

#使用print以逗號分隔時,列印則是以空格分界

echo |awk ''

mgg is mingg or mingongge

#awk的print語句中雙引號其實就是個拼接作用

awk 的變數使用:

內建變數

$0       #當前記錄

$1~$n    #當前記錄的第n個字段

fs       #輸入字段分隔符(-f相同作用)預設空格

rs       #輸入記錄分割符,預設換行符

nf       #欄位個數就是列    

nr       #記錄數,就是行號,預設從1開始

ofs      #輸出字段分隔符,預設空格

ors      #輸出記錄分割符,預設換行符     

外部變數傳入

[mingongge@ ~]#a=100

[mingongge@ ~]#b=100

[mingongge@ ~]#echo |awk '' v1=$a v2=$b

10000

awk 運算與判斷:

算術運算子

+ -  加減

* / & 乘 除 求餘

^ *  求冪

++ -- 增加或減少,作為字首或字尾

[mingongge@ ~]#awk 'begin'

b 0 1 1

[mingongge@ ~]#awk 'begin'

0 0 1 1

[mingongge@ ~]#awk 'begin'

0 0 0 1

#和其它程式語言一樣,所有用作算術運算子進行操作,運算元自動轉為數值,所有非數值都變為0

賦值運算子

= += -= *= /= %= ^= **=

正則運算子

~ !~  匹配正規表示式/不匹配正規表示式

邏輯運算子

||  &&  邏輯或  邏輯與

關係運算子

< <= > >= != = 

其它運算子

$      字段引用 

空格   字串鏈結符

?:     三目運算子

ln     陣列中是否存在某鍵值

awk 正則:

^    行首定位符

$    行尾定位符

.    匹配任意單個字元

*    匹配0個或多個前導字元(包括回車)

+    匹配1個或多個前導字元

?    匹配0個或1個前導字元   

匹配指定字元組內的任意乙個字元/^[ab]

[^]  匹配不在指定字元組內的任意乙個字元

()   子表示式

|    或者

\    轉義符

~,!~ 匹配或不匹配的條件語句

x  x字元重複m次

x x字元至少重複m次

x x字元至少重複m次但不起過n次(需指定引數-posix或--re-interval)

Linux命令三劍客

grep的簡單使用 grep的主要作用 文字搜尋工具,根據使用者指定的 模式 對目標文字逐行進行匹配檢查 列印匹配到的行 grep的工作模式 由正規表示式字元及文字字元所編寫的過濾條件 grep的用法 grep options pattern file options v 顯示不被pattern匹配...

linux命令三劍客grep sed awk

grep cinvabc word filename c 匹配的行數,輸出行數 grep c install create.log2.i 匹配不區分大小寫,輸出所以內容 grep i dddd test3.n 輸出所有並顯示行數 4.v 取反,輸出所有沒有 install 的行 5.r 查乙個目錄下...

linux 三劍客之 grep

grep 是 linux系統中最重要的命令之一 其功能是從文字或者管道資料中篩選匹配的行及資料 如果配置正規表示式技術一起使用,則其功能更強大,它是linux運維人員必須要掌握的命令之一 usage grep option pattern file 用法 grep 引數 要搜尋的內容 檔案 eg r...