awk基础入门

来源:互联网 发布:雕刻机画图软件 编辑:程序博客网 时间:2024/06/01 07:26

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 auxUSER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMANDroot         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 %MEMroot 1 0.0root 2 0.0root 3 0.0root 4 0.0root 5 0.0root 6 0.0

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

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

[shaoyong@chroot-64:~]$ awk -F ":" '{ print $1" "$2 }' /etc/passwdroot xdaemon xbin xsys xsync xgames xman xlp x

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

原创粉丝点击