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