學(xué)習(xí)的內(nèi)容來自于Linux Shell腳本攻略(2)
內(nèi)容只做了簡單的記錄,方便自己學(xué)習(xí)
shell 命令查詢地址:http://man.linuxde.net/
awk
awk的靈活性十分的高,它是一款用于設(shè)計(jì)數(shù)據(jù)流的工具,最方便的操作是對數(shù)據(jù)的行和列的操作
基本結(jié)構(gòu)如下
awk 'BEGIN {print 'start'} pattern {commands } END{print 'end'} file
工作原理:
1)執(zhí)行BEGIN{commadns}語句塊中的語句
2)從文件或stdin中讀取一行,然后執(zhí)行pattern{commands}。重復(fù)這個(gè)過程直到文件全部被讀取完
- 當(dāng)讀至輸入流末尾時(shí),執(zhí)行END{commadns}語塊
Begin語句塊在awk開始從輸入流中讀取之前就已經(jīng)被執(zhí)行,這是一個(gè)可以選擇的語塊,當(dāng)我們需要初始化我們的輸出內(nèi)容的時(shí)候,就可以選擇比如表單的表頭
END語句塊是在awk從輸入流中讀取完所有行之后執(zhí)行的,這也是一個(gè)可以選擇的語句塊
pattern 語句塊 默認(rèn)執(zhí)行{print} 即打印讀取到的每一行
每讀取一行,awk就會檢查該行和提供的樣式是否匹配,如果匹配則執(zhí)行{}中的語句


awk的特殊變量
NR:表示記錄數(shù)量,在執(zhí)行過程中對應(yīng)于當(dāng)前行號
NF:表示字段數(shù)量(變量) 在執(zhí)行過程中對應(yīng)于當(dāng)前行的字段數(shù)
$0:這個(gè)變量包含執(zhí)行過程中當(dāng)前行的文本內(nèi)容
$1:這個(gè)變量包含第一個(gè)字段的文本內(nèi)容
$2:這個(gè)變量包含第二個(gè)字段的文本內(nèi)容

這里可以看他,他會把,左右的字段判斷成為一個(gè)字段
$NF 表示這一行的最后一個(gè)字段 ${NF-1}倒數(shù)第二個(gè)字段