`

Linux awk 命令简单使用

阅读更多
       awk 比到目前为止一直讨论的工具都强大得多。
        它是一种完整的语言,是一种解析脚本语言。换句话说,在运行它们之前,不需要编译用 awk 编写的程序。在此将给出几个简单的 awk 语句,只作为命令行的应用。可以看到,它常常在系统 shell 脚本中使用(通常也作为一个简单的单行命令),而且知道它的存在必定有用。但是如果希望 awk 能够很好地完成事情(根据程序的规则,选择和替换文本文件中的文本),应该考虑任务是否可以通过另一种更强大的脚本语言,更简单、更容易地完成(例如 Python 或 Perl)。
        另一方面, awk 是一个总可使用的小得多的程序:

user@bible:~ > cat foods
boiled  carrots
fried   potatoes
grilled onions
grated  carrot

user@bible:~ > awk /carrot/ foods
boiled  carrots
grated  carrot
在此,awk 只选择匹配 carrot 的行

user@bible:~ > awk '{print $1}' foods
boiled
fried
grilled
grated
在此,awk 打印了每一行的第一个字段,正如 “{print $1}”的定义。使用 $2 得到第二个字段,而 $0 表示整行。


user@bible:~ >awk -F\: '{print $}' /etc/passwd
root
bin
[...]
Guest User
也可以定义分隔符为其他字符。以上示例中,选项 -F\: 定义字段分隔符是冒号,允许从/etc/passwd选择一个特定字段(第5个,它是用户的真实名称),它是一个用冒号分隔的文件。


awk 有多个有用的内置函数。例如:
user@bible:~ > cat morefoods
biled carrots and fried bacon
fried potatoes and grilled sausages and mushrooms
grilled onions
grated carrot

user@bible:~ > awk 'NF > 2' morefoods
boiled carrots and fried bacon
fried potatoes and grilled sausages and mushrooms
NF 表示字段的数量。在这个示例中,通过使用 'NF>2',选择了超过两个字段的行。
常用的解决问题之处:
        试解决将结构化数据导入到应用程序的问题,其中一些行有错误数量的字段,而导入失败,等等。

user@bible:~ > awk 'NF > 2 {print $4}' morefoods
fried
grilled
在此,awk 打印了每行的第4个字段,它有两个以上的字段。

user@bible:~ > awk '{print NF ":" $0}' morefoods
5:biled carrots and fried bacon
7:fried potatoes and grilled sausages and mushrooms
2:grilled onions
2:grated carrot
在此,awk 打印字段的数量,之后是一个冒号和整行(由 $0 表示)。

      awk 脚本可以从命令行运行,使用 awk -f scriptname.file 这样的命令即可。
例如,将以下内容保存为 script.awk :
    {print $1 ":" $2 ":" NF
    }
    END{print NR}
然后,完成以下事情:
user@bible:~ > awk -f script.awk morefoods
boiled:carrots:5
fried:potatoes:7
grilled:onions:2
grated:carrot:2
4
文件每一行的前两个字段已经打印,它们之间是一个冒号,之后是另一个冒号和该行中的字段数量(NF)。遍历完文件之后,END 字节打印 NR(记录数量)的值。


在系统上,GNU awk 提供了 info 文件格式的文档,输入 info awk 可查看它。最新版本的 GNU awk 手册可从 http://www.gnu.org/software/gawk/manual/得到。



摘自:《SUSE Linux 10 宝典》人民邮电出版社
分享到:
评论

相关推荐

    linux-shell脚本命令:awk命令简介

    本文主要对linux-shell脚本命令中的awk命令进行简单介绍,希望对您有所帮助。

    linux命令--AWK用法简介

    linux命令 AWK 用法 介绍了awk命令的一些简单用法

    一天一个shell命令 linux文本内容操作系列-awk命令详解

    简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。 awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。 awk其名称得自于它的...

    linux之awk命令的用法

    awk是一个非常棒的数字处理工具。相比于sed常常作用于一整行的处理,awk则比较倾向于将一行分为数个“字段”来处理。运行效率高,而且代码简单,对格式化的文本处理能力超强

    awk入门到精通.pdf

    此外, awk内建有pipe的功能, 可将处理中的数据传送给外部 的 Shell命令加以处理, 再将Shell命令处理后的数据传回awk程序, 这个特点也使得awk程序很 容易使用系统资源. 由于awk具有上述特色, 在问题处理的过程中, 可...

    android设备不识别awk命令 缺少busybox怎么办

    android设备不识别awk命令,缺少busybox 一、什么是BusyBox ? BusyBox 是标准 Linux 工具的一个单个可执行实现。BusyBox 包含了一些简单的工具,例如 cat 和 echo,还包含了一些更大、更复杂的工具,例如 grep、...

    Linux 服务器中提高CPU使用率脚本

    1、创建存放脚本文件目录 mkdir -p /etc/press chmod 777 /etc/press 2、启动定时任务进程 echo 'systemctl start crond.service...部署成功后查看当前使用率:top -n 1|grep Cpu|awk '{print "当前CPU使用率:"$2"%"}'

    Linux sed命令的使用

    1.功能简介 sed(Stream EDitor)是一种流文件编辑器,它一...sed功能同awk类似,差别在于,sed简单,对列处理的功能要差一些,awk功能复杂,对列处理的功能比较强大。 2.命令格式 sed [OPTION]... {script-only-if-no-

    LINUX操作系统(电子教案,参考答案)

    芬兰青年Linus Torvalds和其杰作的传奇故事吸引了无数的电脑爱好者尝试去使用Linux,但他们中的大多数人却被Unix类操作系统传统的枯燥的字符界面、艰涩难懂的操作命令和数量庞大的基本概念以及基础知识所吓退。Linux...

    我的经常使用linux小命令

    这里并非系统具体介绍每个Linux命令,不过记录本人在平时工作中经经常使用到的一些比?基础的命令及相关的?数,同一时候用了一些简单的样例来说明这些命令的用途,以及怎样用多种命令来实现同一种功能。  1、ls命令...

    LINUX与UNIX SHELL编程指南(很全)

    3.2.1 使用at命令提交命令或脚本 26 3.2.2 列出所提交的作业 27 3.2.3 清除一个作业 27 3.3 &命令 27 3.3.1 向后台提交命令 28 3.3.2 用ps命令查看进程 28 3.3.3 杀死后台进程 28 3.4 nohup命令 29 3.4.1 使用nohup...

    awesome-awk:精选的 AWK 框架、库、软件和资源列表

    完整的文档、指南和书籍快速指南 Unix/Linux 中的 AWK 命令以及 Anshika Goyal 和 Praveen Negi 的示例来自 GNU AWK 文档的一些简单示例Awk - 教程和介绍awk 示例第 1 部分,第 2部分,第 3 部分Frank Moraes 的 Awk...

    redhat linux教材20课程学习文档

    第三章 Shell命令使用 3.1 控制台相关命令 clear 命令 echo 命令 yes 命令 3.2 目录操作命令 cd 命令 pwd 命令 mkdir 命令 rmdir 命令 3.3 文件操作命令 ls 命令 touch 命令 cat 命令 more 和 less 命令...

    RED HAT LINUX 6大全

    4.8 使用Red Hat的wmconfig命令 54 4.9 个人化的X资源文件 54 4.10 使用xdm 55 4.11 XFree86疑难解答 57 4.12 小结 57 第5章 窗口管理器 58 5.1 GNOME X环境 59 5.1.1 什么是GNOME 59 5.1.2 GNOME 安装组件 59 5.1.3...

    Linux shell编程指南

    3.2.1 使用at命令提交命令或脚本 26 3.2.2 列出所提交的作业 27 3.2.3 清除一个作业 27 3.3 &命令 27 3.3.1 向后台提交命令 28 3.3.2 用ps命令查看进程 28 3.3.3 杀死后台进程 28 3.4 nohup命令 29 3.4.1 使用nohup...

    Linux与unix shell编程指南

    20.1.1 shift命令简单用法 225 20.1.2 命令行输入的最后一个参数 225 20.1.3 使用shift处理文件转换 226 20.2 getopts 229 20.2.1 getopts脚本实例 229 20.2.2 getopts使用方式 231 20.2.3 使用getopts指定变量取值 ...

    linux常用命令大汇总

    linux常用命令其中有一些命令用“有用”已经不足以形容她的“可爱”,希望各位朋友不要过于“咬文嚼字”。另外,回答中的指令多达六七十个,当时实施过程中,由于对指令的不熟悉,为了不至于“误人子弟”,还要查阅...

    绝版经典《Linux与UNIX Shell编程指南》

    20.1.1 shift命令简单用法 225 20.1.2 命令行输入的最后一个参数 225 20.1.3 使用shift处理文件转换 226 20.2 getopts 229 20.2.1 getopts脚本实例 229 20.2.2 getopts使用方式 231 20.2.3 使用getopts指定变量取值 ...

    linux shell 编程教程

    linux shell编程 教程大全 目 录 译者序 前言 第一部分 shell 第1章 文件安全与权限 1 1.1 文件 1 1.2 文件类型 2 1.3 权限 2 1.4 改变权限位 4 1.4.1 符号模式 4 1.4.2 chmod命令举例 5 1.4.3 绝对模式 5 1.4.4 ...

Global site tag (gtag.js) - Google Analytics