`

awk编程

 
阅读更多

使用方法

awk '{pattern + action}' {filenames}

尽管操作可能会很复杂,但语法总是这样,其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。花括号({})不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。 pattern就是要表示的正则表达式,用斜杠括起来。

awk语言的最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作。完整的awk脚本通常用来格式化文本文件中的信息。

通常,awk是以文件的一行为处理单位的。awk每接收文件的一行,然后执行相应的命令,来处理文本。

 

单独使用  awk  [-F separator]  'commad'  input-file(s);

其中,commands 是真正awk命令,[-F域分隔符]是可选的。 input-file(s) 是待处理的文件。
在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。通常,在不指名-F域分隔符的情况下,默认的域分隔符是空格。

复杂调用  awk  -f  awk-script-file  input-file(s);

 

其中,-f选项加载awk-script-file中的awk脚本,input-file(s)跟上面的是一样的。

此外,$0变量是指整条记录。$1表示当前行的第一个域,$2表示当前行的第二个域,......以此类推。

例如:

只是显示/etc/passwd的账户和账户对应的shell,而账户与shell之间以tab键分割 

#cat /etc/passwd |awk -F ':''{print $1"\t"$7}'

 

awk内置变量

awk有许多内置变量用来设置环境信息,这些变量可以被改变,下面给出了最常用的一些变量。

复制代码
ARGC               命令行参数个数
ARGV               命令行参数排列
ENVIRON            支持队列中系统环境变量的使用
FILENAME           awk浏览的文件名
FNR                浏览文件的记录数
FS                 设置输入域分隔符,等价于命令行 -F选项
NF                 浏览记录的域的个数
NR                 已读的记录数
OFS                输出域分隔符
ORS                输出记录分隔符
RS                 控制记录分隔符

 

统计/etc/passwd:文件名,每行的行号,每行的列数,对应的完整行内容:

#awk  -F ':'  '{print "filename:" FILENAME ",linenumber:" NR ",columns:" NF ",linecontent:"$0}' /etc/passwd
filename:/etc/passwd,linenumber:1,columns:7,linecontent:root:x:0:0:root:/root:/bin/bash
filename:/etc/passwd,linenumber:2,columns:7,linecontent:daemon:x:1:1:daemon:/usr/sbin:/bin/sh
filename:/etc/passwd,linenumber:3,columns:7,linecontent:bin:x:2:2:bin:/bin:/bin/sh
filename:/etc/passwd,linenumber:4,columns:7,linecontent:sys:x:3:3:sys:/dev:/bin/sh

 

使用printf替代print,可以让代码更加简洁,易读

 awk  -F ':'  '{printf("filename:%10s,linenumber:%s,columns:%s,linecontent:%s\n",FILENAME,NR,NF,$0)}' /etc/passwd

 

print和printf

awk中同时提供了print和printf两种打印输出的函数。

其中print函数的参数可以是变量、数值或者字符串。字符串必须用双引号引用,参数用逗号分隔。如果没有逗号,参数就串联在一起而无法区分。这里,逗号的作用与输出文件的分隔符的作用是一样的,只是后者是空格而已。

printf函数,其用法和c语言中printf基本相似,可以格式化字符串,输出复杂时,printf更加好用,代码更易懂。

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    awk编程语言入门

    awk 编程语言入门 awk 编程语言是一种功能强大的命令行语言,主要用于处理文本数据。它可以读取文件或其他命令的输出,并根据条件进行查找和操作。awk 的设计思想很简单,但在实际操作中却很复杂。 awk 中的记录、...

    GAWK-Effective AWK Programming - GNU Awk编程经典

    《GAWK: Effective AWK Programming - GNU Awk编程经典》是一本介绍如何使用GAWK进行编程的指南。 在标题中提到的“GNU Awk编程经典”指的是这本书是学习和掌握GNU Awk编程的权威资源。该书详细介绍了awk语言的基础...

    Sed AWK编程指南

    ### Sed AWK编程指南知识点详解 #### 一、引言 在计算机科学领域,文本处理是必不可少的一部分。其中,`sed` 和 `awk` 是两种非常强大的文本处理工具,广泛应用于Linux/Unix环境中。本指南将详细介绍这两个工具的...

    awk 编程实例1

    ### Awk编程基础知识点 #### 一、Awk语言简介 Awk是一种专门设计用于文本处理和报表生成的脚本语言。尽管它的名字听起来有些奇特,但其实它是一种功能强大且设计精巧的语言。Awk的语法简洁明了,易于学习,并且...

    sed命令和awk编程教程

    ### sed命令和awk编程教程知识点概述 #### 一、sed命令基本概念与使用方法 - **sed命令简介**: - `sed` 是一个非交互式的流编辑器(Stream Editor),主要用于自动化文本处理任务,尤其适合处理大型文件或者复杂的...

    shell、awk编程教材

    **五、AWK编程** AWK是一种强大的文本分析工具,常用于处理和分析结构化的数据文件。它在每一行数据上运行用户定义的模式匹配和操作,提供了灵活的数据处理能力。 AWK的基本结构包括模式(pattern)和动作(action...

    Effective awk Programming, 4th Edition[awk高效编程4版]

    《Effective awk Programming, 4th Edition》是一本深入讲解awk编程技术的专业书籍,旨在帮助读者提升在文本处理和数据操作中的效率。awk是Unix/Linux环境中的一款强大工具,它专门用于处理结构化的文本数据,如日志...

    AWK编程实例指南.rar_AWK ns2_awk_awk unix.shell_awk编程实例

    总的来说,"AWK编程实例指南.rar"提供的资源对于想学习或提升AWK编程能力的人来说非常有价值。通过阅读和实践其中的实例,不仅可以理解AWK的基础知识,还能学习如何在实际项目中有效地应用它。无论是数据处理、日志...

    linux awk编程

    ### Linux Awk 编程详解 #### 一、awk 命令格式与选项 **awk** 是一种强大的文本处理工具,在 Linux 和 Unix 环境下被广泛使用。它支持复杂的模式匹配和数据处理任务,非常适合用于数据分析、报告生成等场景。 ##...

    Effective AWK Programming:Awk 编程的经典著作

    《Effective AWK Programming》是关于AWK编程语言的一本经典著作,主要面向那些希望深入理解和高效使用AWK的读者。AWK是一种强大的文本分析工具,常用于数据处理、报告生成和脚本编写,在UNIX和类UNIX系统中广泛使用...

    awk编程,使用于初学者

    ### AWK编程初学者指南 #### 一、引言 AWK编程,作为一种在Unix操作系统中广泛应用的脚本语言,自1977年由Alfred V. Aho、Peter J. Weinberger和Brian W. Kernighan三位大师共同创造以来,便以其强大的文本处理...

    Linux自动化运维课程中Awk编程语言的应用实践与解析

    内容概要:本文档旨在介绍awk编程语言的使用技巧及其在Linux系统自动化运维中的重要作用。文档详细解释了awk如何按行读取文件,以及如何通过定义特定的分隔符来提取文件中的不同字段。同时介绍了awk内置的正则表达式...

    有效的AWK编程,第三版Effective AWK Programming, 3rd Edition

    教您有关awk语言以及如何有效使用它的知识。 还介绍了awk的GNU实现gawk。

    UNIX 下AWK编程起步教程

    本教程是为初学者准备的,将带你步入AWK编程的世界,帮助你理解其基本概念和常用操作。 1. **AWK的基本原理** - AWK工作在行级别,它逐行读取输入文件,然后根据用户定义的模式(pattern)对每一行进行匹配。 - ...

    linux下的awk编程

    ### Linux下的awk编程 #### 简介 `awk`是一种强大的文本处理工具,它在Linux环境下被广泛用于数据操作任务,例如格式化数据、验证数据有效性、查找具有特定属性的项、累加数字以及打印报告等。由于这些任务经常...

    Linux下BASH、AWK编程视频教程.zip

    本篇将围绕"Linux下BASH、AWK编程视频教程"这个主题,深入探讨这两个编程语言的基础知识及其在实际工作中的应用。 首先,BASH是Linux的默认shell,它是用户与系统进行交互的主要接口。它不仅提供了基本的命令执行...

    Sed与Awk (中文版)

    **awk编程的高级应用** 书中还涉及了如何开发处理索引的应用程序,以此来演示awk的强大功能。此外,还包括了如何获取不同awk版本的FTP和联系信息。 **用户提供的程序实例** 本书还包含了一系列由用户提供的程序,...

    awk:AWK编程语言(AWK程序设计语言,awkbook)

    在标签中提到的“latex awk awkbook LaTeXTeX”,暗示了这个压缩包可能包含与AWK编程相关的LaTeX文档或教程。"awkbook"可能是《AWK程序设计语言》的LaTeX源代码,这对于学习AWK和LaTeX的人来说非常有价值,因为可以...

    高效awk编程

    awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。 ...

Global site tag (gtag.js) - Google Analytics