awk ' begin pattern end file
awk 指令碼通常由3部分組成。 begin , end 和帶模式匹配選項的常見語句塊。這3個部分都是可 選項,在指令碼中可省略任意部分。
awk 指令碼包含在單引號之間
awk 'begin end '
檔案的內容格式如下,在命令使用awk -f
readawk從輸入流(檔案,管道或者標準輸入)中讀取一行,然後儲存到記憶體中。
execute
所有的awk命令都依次在輸入上執行。預設情況下,awk會對每一行執行命令,我們可以通過提供模式限制這種行為。
repeat
處理過程不斷重複,直到到達檔案結尾。
執行 begin 語句塊中的語句。
從檔案或 stdin 中讀取一行,然後執行 pattern 。重複這個過程,直到檔案全部被讀取完畢。
當讀至輸入流末尾時,執行 end 語句塊。
變數名含義
nr
表示記錄數量,在執行過程中對應於當前行號。
nf
表示字段數量,在執行過程中對應於當前行的字段數。
$0
這個變數包含執行過程中當前行的文字內容。
$1
這個變數包含第乙個欄位的文字內容。
$2
這個變數包含第二個欄位的文字內容。 範例
效果$ awk '' file
列印每一行的第2和第3個字段
$ awk 'end' file
統計檔案中的行數
借助選項-v
,我們可以將外部值(並非來自 stdin )傳遞給 awk
$ var
=10000
$ echo | awk -v
variable
=$var
''10000
awk 通常預設讀取乙個檔案的所有行。如果只想讀取某一行,可以使用 getline 函式。有時候,我們需要從 begin 語句塊中讀取第一行。
語法:getline var
變數 var 就包含了特定行的內容。如果呼叫不帶引數的 getline ,我們可以用$0
、$1
和$2
訪問文字行的內容。
$ seq 5 | awk 'begin '
read ahead first
line12345
範例
效果awk 'nr < 5'
行號小於5 的行
awk 'nr==1,nr==4'
行號在1到5之間的行
awk '/linux/'
包含樣式linux 的行(可以用正規表示式來指定模式)
awk '!/linux/'
不包含包含模式為linux
預設的字段定界符是空格。我們也可以用 -f 「delimiter」 明確指定乙個定界符
$ awk -f: '' /etc/passwd
在 begin 語句塊中則可以用ofs="delimiter"
設定輸出欄位的定界符。
將命令的輸出結果讀入變數 output 的語法如下
"command" | getline output ;
$ echo | awk ''
root:x:0
:0:root
:/root
:/bin/bash
通過使用 getline ,我們將外部shell命令的輸出讀入變數 cmdout 。
for(i=0; i<10; i++)
或者for(i in array)
範例效果
length(string)
返回字串的長度。
index(string, search_string)
返回 search_string 在 string 中出現的位置。
split(string, array, delimiter)
用定界符生成乙個字串列表,並將該列表存 入陣列。
substr(string, start-position, end-position)
在字串中用字元起止偏移 量生成子串,並返回該子串。
sub(regex, replacement_str, string)
將正規表示式匹配到的第一處內容替換成 replacment_str 。
gsub(regex, replacment_str, string)
和 sub() 類似。不過該函式會替換正規表示式匹配到的所有內容。
match(regex, string)
檢查正規表示式是否能夠匹配字串。如果能夠匹配,返回 非0值;否則,返回0。
DuiLib入門簡明教程
2013 duilib入門教程彙總 2013 duilib入門簡明教程 前言 1 2013 duilib入門簡明教程 vs環境配置 2 2013 duilib入門簡明教程 第乙個程式 hello world 3 2013 duilib入門簡明教程 響應按鈕事件 4 2013 duilib入門簡明教程...
Linux 入門簡明教程
linux 不像windows有c d e等碟符的概念,所有檔案均在根目錄 下,通過路徑區分 bin bin 是 binaries 二進位制檔案 的縮寫,這個目錄存放著最經常使用的命令 boot 存放的是啟動 linux 時使用的一些核心檔案,包括一些連線檔案以及映象檔案 dev linux 的外部...
iBatis簡明教程及快速入門
和1.0相比,主要改動在xml配置檔案上,不過,只要有sql基礎,相信你不用教程也能看明白。下面我們看乙個最簡單的例子入門。我們先建乙個表account,包括欄位username,varchar 20 pk和password,varchar 20 隨便填入一些資料。然後編寫ibatis必須的配置檔案...