1. 程式人生 > >awk 簡單用法(內建函式)

awk 簡單用法(內建函式)

做為一個windows系統管理員,文字處理將是一個難點,但在linux 裡面顯然就是一盤小白菜.在linux 文字處理工具上面,awk佔了60%的份量,另外還有sed與grep ,這裡主要記錄一些awk常見的使用方法,詳細的大家可以舉一反三,
awk 這不是一個單詞,而是這門語言的創始人(三個人: Alfred V. Aho、Peter J. We i n b e rg e r、Brian W. Kernighan)簡稱,所以你別指望著從你的英文字典裡面找出這個單詞的意思.呵呵
言歸正傳:
gawk 是GNU計劃下的awk ,包含了awk下的所有功能,一門程式語言,故就有著他固定的格式.gawk 當然也不能例外了,基本格式為:
  gawk '/pattern/ {action}' file.txt
裡面的pattern用//括起來,action 用花括號括起來,action也可以不寫.
好,先讓我們一起看個例子吧:
  gawk '/rpcuser/' /etc/passwd
這句話指的是將/etc/passwd這個file中包含了rpcuser的整行一起輸出,是不是很方便呀?
當然你也許還有更苛刻的需求,要求輸出第3個欄位,想知道他是否能夠登入?這樣你只需要在裡面增加一個action就OK了,試試看吧:
  gawk '/rpcuser/ {print $3}' /etc/passwd
解釋一下:
    /rpcuser/ 這裡面的/ /是一個pattern 指include rpcuser 的所有line;  {print $3}是一個action,用{}來表示,預設gawk 是以空格或者tab鍵來給每一行分割槽塊的,第一個區塊為$1,第二個區塊為$2 依此類推
當然你也可以將區塊分隔符號修改成其它,如冒號,分號,逗號等,舉例如下:
gawk -F ":" '/rpcuser/ {print $2}' /etc/passwd
注意:在這裡面-F中的F一定要大寫

還可以將檔案區域進行計算.如:
運算子說明示例
+ 加法運算
- 減法運算
* 乘法運算
/ 除法運算
^ 乘方運算3^2 (=9)
% 求餘數9%4 (=1)
在awk 中如下表示:gawk '/**/ {print $2/100}' file.txt  第三個欄位除以一百的結果
還支援表示式,如action也可以寫成這樣{print $1+$2*$3}

awk 還有一些內部函式,如
g a w k中有各種的內部函式,現在介紹如下:
6.6.1 隨機數和數學函式
sqrt(x) 求x 的平方根
sin(x) 求x 的正弦函式
cos(x) 求x 的餘弦函式
a t a n 2 ( x,y) 求x / y的餘切函式
log(x) 求x 的自然對數
exp(x) 求x 的e 次方
int(x) 求x 的整數部分
rand() 求0 和1之間的隨機數
srand(x) 將x 設定為r a n d ( )的種子數

還有字串的內部函式,如:
index 函式  格式:{print index("technical", "ch")} 尋找ch 出現在字串technical中位置,結果為3.

length 函式 格式: length(abcde) 結果5 .
match (string, example)  在字串string中找到最靠左邊的example 的位置.
sprintf 與printf 相似
sub ( regexp,replacement,target) 在字串target中尋找符合regexp 的最長、最靠左的地方,以字串replacement 代替最左邊的regexp。
例如:
str = "water,water,everywhere"
sub ( /at/, "ith",str)
返回結果為:wither, water, everywhere

substr (string, start, length )返回字串string的子字串,如:
substr (washingdun,5,3) 返回的字串為從第五個字元開始,長度為三個字元,即ing

tolower (string) 將string轉化為小寫字母
toupper (string) 將string轉化為大寫字母

close (filename) 關閉檔案
system(command),這個函式允許執行系統命令.
gawk '$1 != "Tim" {print}' testfile 
      testfile文本當中第一個欄位不等於Tim的行打印出來.
格式化輸出:
    gawk '$1 != "Tim" {print $1,$5,$6,$2}' testfile

進一步,你可以在print動作中加入字串,例如:
gawk '$1!="Tim" {print "The entry for ",$ 1,"is not Tim. ",$2}' testfile
注意:print 中的每一部份都得用逗號隔開.


很神奇吧,可我想知道gawk 到底能用在哪些地方:
• 根據要求選擇檔案的某幾行,幾列或部分欄位以供顯示輸出。
• 分析文件中的某一個字出現的頻率、位置等。
• 根據某一個文件的資訊準備格式化輸出。
• 以一個功能十分強大的方式過濾輸出文件。
• 根據文件中的數值進行計算。

相關推薦

awk 簡單用法函式

做為一個windows系統管理員,文字處理將是一個難點,但在linux 裡面顯然就是一盤小白菜.在linux 文字處理工具上面,awk佔了60%的份量,另外還有sed與grep ,這裡主要記錄一些awk常見的使用方法,詳細的大家可以舉一反三, awk 這不是一個單詞,而是這門

python中的關鍵字---3函式

內建函式 # 1 range(起始位置,終止位置,步長) # range(終止位置) # range(起始,終止位置) # range(起始,終止,步長) # range(5) [0,4] [0,5) # range(1,5) [1,4] [1,5) # rang

JavaScript函式函式,變數詳解

JavaScript函式(內建函式),變數詳解                                   &nb

Python基礎知識函式彙總

python內建函式 最近一直在看python的document,打算在基礎方面重點看一下python的keyword、Build-in Function、Build-in Constants、Build-in Types、Build-in Exception這四個方面,其實在看的時候發現整個《

python3語言學習筆記三:六類資料型別函式

1.Python3 數字(Number) 數字型別轉換: int(x) 將x轉換為一個整數。 float(x) 將x轉換到一個浮點數。 complex(x) 將x轉換到一個複數,實數部分為 x,虛數部分為 0。 complex(x, y) 將 x 和 y

20181130裝飾器補充,疊加多個裝飾器,有參裝飾器,三元表示式,生成式,匿名函式函式

  一、裝飾器的補充 1、函式屬性的傳遞 Python裝飾器(decorator)在實現的時候,被裝飾後的函式其實已經是另外一個函數了(函式名等函式屬性會發生改變),為了不影響,Python的functools包中提供了一個叫wraps的decorator來消除這樣的副作用。寫一個decora

python 2.5元組訪問、修改、刪除、索引、擷取、函式

Python3 元組Python 的元組與列表類似,不同之處在於元組的元素不能修改。元組使用小括號,列表使用方括號。元組建立很簡單,只需要在括號中新增元素,並使用逗號隔開即可。如下例項:>>> tup1 =('Google','Runoob',1997,20

06 python元組建立、索引、修改、刪除、函式

python中的元組與列表類似,只不過元組中的元素不可刪除和修改,可以索引查詢,也可以將兩個元組組合,可以刪除整個元組。 - 格式 list1=[1,2,3,4,5] #列表使用方括號 tuple1=(1,2,3,4,5)

python的檔案操作file:函式,如seek、truncate函式

file開啟檔案有兩種方式,函式用file()或者open()。開啟後讀入檔案的內容用read()函式,其讀入是從檔案當前指標位置開始,所以需要控制指標位置用: 一、先介紹下file讀入的控制函式: seek(offset,where): where=0從起始位置移動,1

mongoTemplate簡單用法增刪改查

分頁時查詢數量: 1 2 3 4

Python -- 其他知識點屬性

內建屬性 1、檢視一個物件有哪些屬性 class Person(object): pass dir(Person) 輸出: ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__',

next_permutation的思想和用法全排列函式

#include<iostream> #include<algorithm> using namespace std; int main(){ int a[4]={1,2,3,4}; do{ cout<<a[0]<<"

UpdatePanel的簡單用法非巢狀

ScriptManager和UpdatePanel控制元件聯合使用可以實現頁面區域性非同步重新整理的效果。UpdatePanel用來設定頁面中區域性非同步重新整理的區域,它必須依賴於ScriptManager,因為ScriptManager控制元件提供了客戶端指

CC2640之OAD韌體升級Flash

OAD是TI在BLE協議棧基礎上擴充套件的一種無線更新技術。OAD使用客戶端-伺服器的機制工作。需要韌體更新的目標晶片叫做OAD Target/Client,用來管理OAD功能的一端叫做OAD Manager/Server。 配置OAD的目標裝置,如果需要更新軟體的話,不用連線模擬器,通過BLE無線

webservice的簡單用法建立以及呼叫

2018年02月24日整理一下最近三天的工作內容,事情大概是這個樣子的,客戶提了一個要求,在原有的專案的基礎上,增加一個介面,主要用於同步人事新入職員工的資料,客戶要求使用webservice來開發這個介面,客戶那邊的開發人員傳一個表過來,然後我定義一個介面負責接收客戶傳過來

linux awk 函式詳細介紹例項

這節詳細介紹awk內建函式,主要分以下3種類似:算數函式、字串函式、其它一般函式、時間函式 一、算術函式: 以下算術函式執行與 C 語言中名稱相同的子例程相同的操作: 函式名 說明 atan2( y, x ) 返回 y/x 的反正切。 cos( x ) 返回 x 的餘弦;x 是弧度。 sin( x ) 返

函式和常用模組【day04】:函式

一、36-40 36、isinstance(object, classinfo) 功能:用於判斷,物件是否是某個類的例項 # s = "alex" # 物件,"alex" => str s = [11,11,11] # 用於判斷,物件是否是某個類的例項 r = isinsta

【轉】Python 函式 locals 和globals

Python 內建函式 locals() 和globals() 轉自: https://blog.csdn.net/sxingming/article/details/52061630

Python 集合函式大全非常全!

Python集合內建函式操作大全 集合(s).方法名 等價符號 方法說明 s.issubset(t) s <= t 子集測試(允許不嚴格意義上的子集):s 中所有的元素都是 t 的成員

《零基礎入門學習Python》21--函式:lambda表示式BIF filte()和map()

前言 接下來學習怎麼建立匿名函式 知識點 lambda 表示式 Python 允許使用lambda關鍵字建立匿名函式 lambda 函式怎麼使用?  單個引數 >>> def add(x): retur