程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase教程 >> awk關系操作符

awk關系操作符

編輯:SyBase教程

awk關系操作符


關系操作符和布爾操作符用於在兩個表達式之間進行比較。下表列出了關系操作符。
關系操作符

運算符 含義 示例 < 小於 x < y <= 小於等於 x <= y == 等於 x == y != 不等於 x != y >= 大於等於 x >= y > 大於 x > y ~ 與正則表達式匹配 x ~ /y/ !~ 與正則表達式不匹配 x !~ /y/

 

關系表達式可用在模式中來控制特殊的操作。例如,如果我們想限定要處理的記錄包含5個字段,則可以用下面的表達式:

NF == 5

這個關系表達式將NF(每個輸入記錄的字段數)的值和5相比較。如果結果為真,那麼就進行相應的處理,否則不進行處理。
注意: 關系操作符"== (相等)"和賦值操作符"= (等於)"是不同的。用"="代替"=="來檢測相等性是一個經常犯的錯誤。

我們可以在試圖打印數據庫phonelist的記錄之前用一個關系表達式來檢測。

NF==6 { print $1,$6 }

只有具有6個字段的記錄才能被打印。

和"--"相反的是"! = (不相等的)"。同樣地,可以比較一個表達式是否大於(>)或小於(<),或大於等於(>=),或小於等於(<=)另一個表達式。如下的表達式:

NR > 1

檢測當前記錄號是否大於1,在條件表達式的一章,我們看到,關系表達式經常用在if語句中,通過計算來決定是否執行特殊的操作。

正則表達式經常用斜槓包圍。這經常被作為正則表達式常量,正如"Hello"是一個字符串常量一樣。我們已經看到很多這樣例子:

/^$/ { print "This is a blank line." }

然而,也常常不局限於正則表達式常量。當使用關系操作符~(匹配)或! ~ (不匹配)時,右邊的表達式可以是awk中的任意表達式; awk將它作為一個字符串並用來指定一個正則表達式。

$5 ~ /MA/ { print $1 ", "$6 }

這個語句是將第五個字段的值與正則表達式"MA"比較。

因為所有的表達式都與~口!~一起使用,因此正則表達式可以用變量來提供。例如,在腳本phonelist中,我們可以用state 來代替"/MA/" ,並編寫一個過程來定義state的值。

$5 ~ state { print $1 ", "$6}

這使得程序代碼更加通用,因為在腳本執行過程中可以動態改變模式。例如,我們可以從命令行參數得到state的值,在之後的文章中我們將討論如何將命令行參數傳遞給腳本。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved