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了,直接读入下一行。
----------------------------待续!
Shell编程第十七弹——使用awk过滤文本
最新推荐文章于 2022-06-25 17:57:25 发布