Shell中的Awk的常用命令语法

awk命令擅长格式化报文或从一个大的文本文件中抽取数据包,下面是该命令的基本语法


awk [-F filed-separator] “commands” input-file(s)
[ - F
域分隔符 ] 是可选的 ,aw k 使用空格作为缺省的域分隔符,如果在要处理的文件中是以冒号作为分割域的 ( passwd 文件 ), 则在处理的时候要这样指明 awk –F: command input-file(s)

1.1域和记录

a w k 执行时,其浏览域标记为 $ 1 $2 . . . $ n 。这种方法称为域标识。使用 $ 1 , $ 3 表示参照第 1 和第 3 域,注意这里用逗号做域分隔。如果希望打印一个有 5 个域的记录的所有域,不必指明 $ 1 , $ 2 , $ 3 , $4 , $ 5 ,可使用 $ 0 ,意即所有域。

1.2保存a w k输出

$ awk ‘{print $0}’ input-files > out-files    (# 重定向保存输出 )
$ awk ‘{print $0}’ input-files | tee out-files  (#
使用 te e 命令,输出到文件的同时输出到屏幕 )

1.3 常用的awk命令举例

[root@mypc /]# awk '$0 ~ /user/' /etc/passwd  (# 如果某域含有 user 就将该行打印出来 )
rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
[root@mypc /]# awk '/user/' /etc/passwd      (#
同上 )
[root@mypc /]# awk -F: '{if ($5 ~ /user/) print $0}' /etc/passwd (#
如第五域有 user 则输出该行 )
rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin
[root@mypc /]# ifconfig | awk '/inet/{print $2}'  (#
ifconfig 的输出中抽取含 inet 的行并打印第二域 )
[root@mypc /]# ifconfig | awk '/inet/{print $2}' | awk -F: '{print $2}' (#
在上面的基础上再抽取,这个命令可以让你直接得到本机的 ip 地址 )

你可能感兴趣的:(shell,Linux,shell,脚本,awk)