文本处理三剑客之一----------awk

简单的说awk是一门类似于shell的编程语言,是一种强大的文本处理工具,它的设计思想来源于 SNOBOL4 、sed 、Marc Rochkind设计的有效性语言、语言工具 yacc 和 lex ,当然还从 C 语言中获取了一些优秀的思想。

它有着属于自己的独特的语法表达方式,虽然操作可能会比较复杂,但是语法格式始终都是:

awk [options] ‘program‘ file…

program: {pattern + action}‘ 或者  ‘pattern {action}‘

pattern部分决定动作语句何时触发及触发事件

BEGIN,END

action statements对数据进行处理,放在{}内指明

print, printf

分割符、域和记录

awk执行时, 由分隔符分隔的字段(域)标记$1,$2..$n称为域标识。 $0为所有域,注意:和shell中变量$符含义不同

文件的每一行称为记录,默认的字段分隔符就是空格

省略action,则默认执行print $0 的操作

它的基本用法如下:

awk [options] ‘program’ var=value file…
awk [options] -f programfile var=value file…
awk [options] ‘BEGIN{ action;… } pattern{ action;… } END{action;… }‘ file ...

----------------------------------------------------------例题解析-----------------------------------------------------------------------

  1. awk -F: ‘{if($3>1000){printf "common user:%s\n",$1"}else {printf "root or sysuser: %s\n",$1}}‘ /etc/passwd

2. awk -v test=‘hello gawk‘ ‘BEGIN{print test}‘ /etc/passwd

3.awk -F: ‘{print name,$1;name="sysuser"}‘

awk -v OFS=":" -F: ‘{name-"systemuser";print name,$1‘} /etc/passwd

awk -v name="systemuser" -v OFS=":" -F: ‘{print name,$1}‘ /etc/passwd

4.awk -F: -f awk.txt /etc/passwd

注意动作可以写在里面文本里。

5.awk -F: ‘BEGIN{print "username      userid\n------------\n"}{printf "%-20s|%10d\n,$1,$3"}‘ /etc/passwd

6.awk -F: ‘BEGIN{print "username-------------uuid"}{printf "username:%15s \t uuid:%d\n",$1,$3}‘ /etc/passwd

7.awk -F: ‘{$3>=1000?usertype="Common User":usertype="Sysadminor SysUser";printf "%15s:%-s\n",$1,usertype}‘ /etc/passwd

8. awk -F" " ‘/^jkj\>/,/^haha\>/{print $1,$2}‘ aa

9. awk -v test=‘hello gawk‘ ‘BEGIN{print test}‘ /etc/passwd

--------------------------------------------------------------------------------------------------例题进阶---------------------------------------------------------------------------------------------------------------------

1.seq 10 |awk ‘i=!i‘

seq 10 |awk ‘!i‘

2.seq 10 |awk ‘i=!i‘

seq 10 |awk ‘{!i;print !i}‘

seq 10 |awk ‘{i=!i;print !i}‘

3.seq 10 |awk ‘{!i}‘

seq 10 |awk ‘{print !i}‘

seq 10 |awk ‘!i‘

4.seq 10 |{i=!i;print i}

5.seq 10 |awk ‘!(i=!i)‘

seq 10 |awk -v i-=1 ‘i=!i‘

6.awk -F: ‘{if($3>=1000) {printf "Common user: %s\n",$1} else{printf "root or Sysuser: %s\n",$1}}‘ /etc/passwd

7.df -h |awk -F% ‘^/\/dev/{print $1}‘ |awk ‘$NF>=80{print $1 "\t" $5}‘

8. awk ‘/^[[:space:]]*linux/{i=1;while(i<=N

时间: 2024-08-11 01:25:24

文本处理三剑客之一----------awk的相关文章

漫漫运维路——文本处理三剑客之awk基础

awk即gawk,是一款在Linux中实现文本格式化输出的文本处理工具,在Linux中与文本过滤工具grep和文本行编辑器sed共同组成Linux中的文本处理三剑客. awk在处理文本时以行为单位,读入整行数据后以指定的分隔符对行进行切片,然后再针对切片后的数据进行处理.如下图所示: 文本经过指定的分隔符进行切片后再对每一片进行处理,然后在根据设定的动作对处理后的文本执行动作,而切片后的文本如果只想引用一部分也可以使用变量进行引用,其引用的各个变量如下表所示: 变量 指代 $0.$N 当前处理行

文本处理三剑客之awk(报告生成器)

文本处理三剑客之awk(报告生成器) awk是一款强大的报告生成器,不同于sed和grep,它的侧重点是如何把文本信息更好的展示出来,常用与统计和格式化输出.awk相当于微型的shell,有着自己一套语法结构,例如:循环结构,数组,条件判断,函数,内置变量等功能. awk在我认为简直就是文本处理时打劫放火一大利器. 例如取出/etc/passwd中的第一列. [root@CentOS6 ~]# awk -F: '{print $1}' /etc/passwd root bin daemon ad

Liunx文本处理三剑客之awk

AWK是Aho, Weinberger, Kernighan三个开发者的首字母,最早用于Unix中,后用于Liunx中称为gawk(GUN awk),是Linux中文本处理三剑客之一,它是一个报告生成器,可以格式化文本并输出.下面所说的awk即gawk,那么我们一块来看一awk常用的用法: gawk - pattern scanning and processing language 字面翻译为:模式扫描及处理语言.也可以说他是一个简单的编程语言.工作原理如下: 按行读取文本,并根据指明输入时用

Linux系统文本处理三剑客之awk

GNU awk: 文本处理三剑客:grep,sed,awk grep,egrep,fgrep:文本过滤工具:pattern sed:行编辑器 模式空间.保持空间 awk:报告生成器,格式化文本输出 gawk - pattern scanning and processing language 基本用法:gawk [options] 'program' FILE ... program:PATTERN{ACTION STATEMENTS} 语句之间用分号分隔 print,printf 选项: -F

文本处理三剑客之awk——从入门到放弃

awk是文本处理三剑客之首,功能及其强大且支持正则表达式(包括基础正则和拓展正则). awk支持(三剑客都支持)以文件作为操作对象,以及从标准输出里面接受内容. [[email protected] ~]# head /etc/passwd | awk -F ":" '{print $1}'rootbindaemonadmlpsyncshutdownhaltmailoperator [[email protected] ~]# head /etc/passwd > test[[e

文本处理三剑客之AWK

AWK的基本格式:    awk [options] 'program' file-          注释:     program->pattern{action statements;..}    pattern和action:    pattern部分决定动作语句何时触发及触发事件 (BEGIN,END)    action statements对数据进行处理,放在{}内指明 (print, printf) awk工作原理: 第一步:执行BEGIN{action;- }语句块中的语句 第

Linux基础(20)文本处理三剑客之awk

awk是比sed更强大的文本处理工具,sed通常是以一整行为处理单位,而awk则可以按照指定的分隔符将一整行分为多个字段单独进行处理. awk的语法 awk -F separator 'BEGIN{command}condition1{command1}condition2{command2}...END{command}' filename #除了处理filename之外 awk也以处理标准输入 -F 指定分隔符,默认是空格符 例如如果指定:为分隔符,则可以这样-F: BEGIN用于指定在处理

Linux文本处理三剑客之awk详解

前言 awk是一款强大的报告生成器,不同于sed和grep,它的侧重点是如何把文本信息更好的展示出来,常用与统计和格式化输出.awk相当于微型的shell,有着自己一套语法结构,例如:循环结构,数组,条件判断,函数,内置变量等功能.处理对象一般纯文本文件或纯文本信息. 用法详解 基本语法 awk [options] 'program' file file ... awk [options] 'PATTERN{action}' file file ... -F CHAR:输入分隔符 awk的输出

Linux文本处理三剑客之awk(一)

  AWK是一个优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一.其名称得自于它的创始人阿尔佛雷德·艾侯.彼得·温伯格和布莱恩·柯林汉姓氏的首个字母.awk经过改进生成的新的版本nawk,gawk,现在默认linux系统下日常使用的是gawk.灵活的应用awk能够让我们的日常运维工作效率得到很大的提高. 一.基本用法: awk [options] 'program' var=value file- awk [options] -f programfile var=