awk命令
awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk做大的优势。
awk语法格式:
打印以冒号分隔的第1,2端
- [root@test1test]#awk-F':''{print$1,$2}'passwd|head-2
- rootx
- binx
- #-F指定分隔符(不加默认为空格分隔)
使用自定义字符连接每个段
- [root@test1test]#awk-F':''OFS="#"{print$1,$2,$3}'passwd|head-2
- root*x*0
- bin*x*1
- [root@test1test]#awk-F':''{print$1"*"$2"*"$3}'passwd|head-2
- root*x*0
- bin*x*1
匹配字符或字符串
- [root@test1test]#awk'/root/'passwd
- root:x:0:0:root:/root:/bin/bash
- operator:x:11:0:operator:/root:/sbin/nologin
匹配字符或字符串并输出指定段
- [root@test1test]#awk-F':''/root/{print$1,$5}'passwd
- rootroot
- operatoroperator
打印行号和列数
- [root@test1~]#awk-F':''{printNR":"NF}'passwd
- 1:7
- 2:7
- #awk内置变量NF(段数)NR(行数)
针对第一段打印匹配字符
- [root@test1~]#awk-F':''$1~/oo/{print$1}'passwd
- root
- #~模糊匹配==精准匹配
- [root@test1~]#awk-F':''NR<3&&$1=="root"{print$0}'passwd
- root:x:0:0:root:/root:/bin/bas/MysqLh
打印第7段的值为3+4并用#号连接
- [root@test1~]#awk-F':''OFS="#",$7=$3+$4{print$0}'passwd
- root#x#0#0#root#/root#0
- bin#x#1#1#bin#/bin#2
- daemon#x#2#2#daemon#/sbin#4
打印第三列的累加值
- [root@test1~]#awk-F':''{(sum=sum+$3)};END{printsum}'passwd
- 2046
awk中使用if关键词
- [root@test1~]#awk-F':''{if($1=="root")print$0}'passwd
- root:x:0:0:root:/root:/bin/bas/MysqLh