awk處理文本總結(jié) - Alex.Wang 2008-2-19 15:55
作為技術(shù)支持工程師,我們最最經(jīng)常的工作就是要處理文本文件,不管是什么數(shù)據(jù)庫(kù)最后都可以導(dǎo)成文本,我們就可以對(duì)他進(jìn)行處理了,這樣即使你不是對(duì)所有數(shù)據(jù)庫(kù)操作都很熟悉,也可以對(duì)他的數(shù)據(jù)進(jìn)行處理了。
我們必須的工具有兩個(gè):一個(gè)是shell,一個(gè)是awk。awk對(duì)于處理文本文件是最最適合的,掌握了awk我們就可以很方便的處理文本文件;再借助一些shell命令,我們可以很方便得到自己想要的結(jié)果?,F(xiàn)在從簡(jiǎn)單的例子來(lái)總結(jié)一下我覺(jué)得會(huì)經(jīng)常碰到的問(wèn)題。
--------------------------------------------------------------------------------
awk入門(mén)篇
awk入門(mén),文本內(nèi)容example1.txt.
user1 password1 username1 unit1 10
user2 password2 username2 unit2 20
user3 password3 username3 unit3 30
在unix環(huán)境中我們可以使用一下命令來(lái)打印出第一列
[root@mail awk]# awk '{print $1}' example1.txt
得到的結(jié)果是如下,解釋一下"'{" 單引號(hào)大括號(hào)包含awk語(yǔ)句是為了和shell 命令區(qū)別,$1的意思就是文本文件的第一列,正常的awk命令跟隨-F參數(shù)指定間隔符號(hào),如果是空格或tab鍵就可以省略了。
user1
user2
user3
[root@mail awk]# awk '{if($5>20) {print $1}}' example1.txt
這行命令和上一行比較增加了“if($5>20)”,得到的結(jié)果是
user3
這個(gè)if語(yǔ)句就沒(méi)有必要更詳細(xì)的解釋了吧!就是第5列大于20的顯示出滿足條件的第一列
[root@mail awk]# awk '{if($5>20 || $5==10) {print $1}}' example1.txt
user1
user3
在來(lái)一個(gè)初級(jí)的又增加了一個(gè)“if($5>20 || $5==10)” 做邏輯判斷邏輯判斷的三個(gè)“|| && !” 或、與、非三個(gè)可以任意加到里面,這個(gè)語(yǔ)句的意思是如果第5列大于20或者等于10的都顯示處理,在我們的工作中可能有用戶會(huì)要求找出所有空間大于多少的或者是空間等于多少的賬戶然后再做批量修改。
if是awk循環(huán)中的一個(gè)還有其他很多,man awk可以看到,
Control Statements
The control statements are as follows:
if (condition) statement [ else statement ]
while (condition) statement
do statement while (condition)
for (expr1; expr2; expr3) statement
for (var in array) statement
break
continue
delete array[index]
delete array
exit [ expression ]
{ statements }
學(xué)習(xí)awk可以經(jīng)常使用一下man awk 可以看到所有的函數(shù)和使用方法。
了解每個(gè)符號(hào)的意義我們才能更好的使用awk,最開(kāi)始先記住幾個(gè)命令知道他可實(shí)現(xiàn)的結(jié)果我們慢慢的再去理解。
新聞熱點(diǎn)
疑難解答