- awk正则表达式
```shell
匹配第一个字段是8个字符的行
tail /etc/services | awk ‘/^[a-z0-9]{8} / {print}’ #有空格 iqobject 48619/tcp # iqobject iqobject 48619/udp # iqobject matahari 49000/tcp # Matahari Broker
匹配记录中包含blp5和tcp的行
tail /etc/services | awk ‘/blp5/ && /tcp/ {print}’ blp5 48129/tcp # Bloomberg locator
匹配记录中包含blp5或tcp的行
tail /etc/services | awk ‘/blp5/ || /tcp/ {print}’ 3gpp-cbsp 48049/tcp # 3GPP Cell Broadcast Service Protocol
不匹配开头是#和空行
tail /etc/services | awk ‘! /^#/ && ! /^$/ {print}’ or tail /etc/services | awk ‘!/^#|^$/ {print}’ or tail /etc/services | awk ‘/^[^#]|”^$”/ {print}’
匹配范围
tail /etc/services | awk ‘/^blp5/,/^com/‘|head blp5 48129/tcp # Bloomberg locator blp5 48129/udp # Bloomberg locator com-bardac-dw 48556/tcp # com-bardac-dw
- **三目运算符(简写条件表达式)**```shellexpr1 ? expr2 : expr3#第一个表达式为真,执行expr2,否则执行expr3awk 'BEGIN{print 1==1?"yes":"no"}' # 三目运算作为一个表达式,里面不允许写print#yesseq 3 |awk '{print $0==2?"yes":"no"}'#for i in `seq 1 6`;do echo $i | awk '{print $i==2?"yes":"no"}';done#no#yes#no
