正则表达式-awk-用法详解

前端之家收集整理的这篇文章主要介绍了正则表达式-awk-用法详解前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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':''$1~/oo/||$3>500{printNR":"$0}'passwd

1:root:x:0:0:root:/root:/bin/bas/MysqLh

23:izabbix:x:501:501::/home/zabbix:/sbin/nologin28374

#$0表示输出整行||或者&&并且><>=<=!===
[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

以上为常见用法,详细解释及扩展用法参考:

http://man.linuxde.net/awk

猜你在找的正则表达式相关文章