Shell编程第十七弹——使用awk过滤文本

1、awk命令是一个完整的编程语言,它使得用户可以为多种模式搜索多个文件并有条件地改动文件而无需考虑打开文件、读入行或关闭文件。特征如下:
    * 域编辑
    * 变量
    * 流控制语句
2、awk的基本语法
awk 'script' files
script由一个或多个命令格式组成
/ pattern/{actions},注意空格
如果省略pattern的话,将匹配每一行。
2.1、域编辑(feild)
在awk程序中,每输入一行都会自动解析为域,以空格或tab分割,可以使用$N来访问第N个域,但是其他变量不使用$符号来访问,例:awk '{print $1 $3;}' grep.txt
但是,这里输出的$1和$3域之间没有空格,如果要使用需在$1和$3之间加上","另外可以使用printf来格式化输出,例如:awk '{printf "%-15s %s/n",$1,$3;}' grep.txt;注意$1之前有“,”。
2.2、执行“模式——行为”
awk使用$0来保存输入的一行,所以[print;}和{print $0;}是一样的。
2.3、使用比较操作符
可以使用比较操作符比较数字和字符串的值,他们的行为类似于C语言或Shell中使用的操作符,格式如下:
expression {actions;}
-----------------------------------------------
<            小于
>            大于
<=
>=
==
!=
value ~/pattern/    若value匹配pattern则为真
value!~/pattern/    若value不匹配pattern则为真
-----------------------------------------------
例如: awk '$3<80{print $3 "*"}' grep.txt
1)、复合表达式(&&或||)
2)、使用next命令
当使用了多个表达式时,如果需要执行某个后就不去判断后面的,就可以使用next语句,就像continue一样。
awk '/ pattern1/{print;next;} / pattern2/{print;}' file
这里,如果匹配了pattern1,那么执行print后就不会去判断pattern2了,直接读入下一行。
----------------------------待续!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值