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