使用awk提取文本
问题
本案例要求使用awk工具完成下列过滤任务:
练习awk工具的基本用法
提取本机的IP地址、根分区使用率
格式化输出/etc/passwd文件中的用户名、UID、宿主目录信息
格式化输出passwd文件内容时,要求第一行为列表标题,最后一行提示一共已处理文本的总行数,如图所示。
步骤
实现此案例需要按照如下步骤进行。
步骤一:awk文本过滤的基本用法
1)基本操作方法
格式:awk [选项] ‘[条件]{编辑指令}’ 文件
其中,print 是最常用的编辑指令;若有多条编辑指令,可用分号分隔。
处理文本时,若未指定分隔符,则默认将空格、制表符等作为分隔符。
直接过滤文件内容:
[root@svr5 ~]# cat /etc/rc.local //文件的完整内容
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
[root@svr5 ~]# awk '{print $1,$2}' /etc/rc.local //输出文件的第1、2列
#!/bin/sh
#
# This
# You
# want
touch /var/lock/subsys/local
结合管道过滤命令输出:
[root@svr5 ~]# uname -a //正常的完整输出
Linux svr5.tarena.com 2.6.18-348.el5 #1 SMP Wed Nov 28 21:22:00 EST 2012 x86_64 x86_64 x86_64 GNU/Linux
[root@svr5 ~]# uname -a | awk '{print $1,$3,$12}' //输出第1、3、12字段
Linux 2.6.18-348.el5 x86_64
2)选项 -F 可指定分隔符
截取/etc/passwd文件的前7行,用来创建一个测试文件,操作如下:
[root@sv