awk基础入门

awk基础入门

概述

​ awk是Linux上一款功能比较强大的文本分析处理工具,相对于grep的查找,sed的编辑,awk支持对文本进行分析、处理之后,生成处理结果或者报告,awk本身就支持一套类似于Shell Script的脚本,更加强化了awk的分析功能。

awk指定分隔符简单提取数据

​ 默认情况下,awk将输入逐行读取,以空格为默认分隔符,将每行的关键文本隔离成多个域,使用’$’ + 数字的形式(\$1、\$2),可以将各个域分别取出(\$0代表整行文本)。

​ 对于多数情况,以默认的分隔符提取已经够用了,查看进程信息、查看文件信息之类的,只需要关注某几列,使用awk可以轻松提取出来。也有一些文件,以其他的符号作为分隔符,比如/etc/passwd之类的,以’:’未分隔符。下面我以2个实例来说明如何使用awk指定分隔符提取数据。

实例1: 提取”ps aux”结果中,USER列、PID列及MEM列

​ 直接使用ps aux时,得到的结果是这样的:

[Morris@chroot-64:~]$ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0   8356   740 ?        Ss   Aug15   0:05 init [2]  
root         2  0.0  0.0      0     0 ?        S    Aug15   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    Aug15   0:00 [migration/0]
root         4  0.0  0.0      0     0 ?        S    Aug15   0:14 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S    Aug15   0:00 [watchdog/0]
root         6  0.0  0.0      0     0 ?        S    Aug15   0:00 [migration/1]
root         7  0.0  0.0      0     0 ?        S    Aug15   0:03 [ksoftirqd/1]
root         8  0.0  0.0      0     0 ?        S    Aug15   0:00 [watchdog/1]
root         9  0.0  0.0      0     0 ?        S    Aug15   0:00 [migration/2]
... ... 未完

可能会包含很多我们不关心的内容,使用grep只能将提取某几行,而无法去除我们不关心的数据。这时可以用awk,直接提取1/2/4列,用法是这样的:

[Morris@chroot-64:~]$ ps aux | awk -F " " '{ print $1" "$2" "$4 }'
USER PID %MEM
root 1 0.0
root 2 0.0
root 3 0.0
root 4 0.0
root 5 0.0
root 6 0.0

可以看到,结果中就只剩我们想了解的信息了。$1/$2/$4之间使用” “,空格隔开。

实例2: 查看/etc/passwd中,第1、2列数据

[shaoyong@chroot-64:~]$ awk -F ":" '{ print $1" "$2 }' /etc/passwd
root x
daemon x
bin x
sys x
sync x
games x
man x
lp x

​ 有了以上的实例,其他的情况使用方式也大同小异,多试试就知道怎么用了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值