awk命令详解是什么 (awk命令)

2023-03-20 0:40:25 指南信息 梁佰亿

awk命令是linux下的一个文件管理命令,具体语法格式为awk [参数] [文件],通常是用于文本和数据进行处理的编程语言,awk命令主要有两个功能;awk命令可以在linux/unix下对文本和数据进行处理;awk命令支持用户自定义函数和动态正则表达式。

相关介绍:

AWK是一种优良的文本处理工具。它不仅是Linux中也是任何环境中现有的功能最强大的数据处理引擎之一。这种编程及数据操作语言(其名称得自于它的创始人AlfredAho、PeterWeinberger和BrianKernighan姓氏的首个字母)的最大功能取决于一个人所拥有的知识。

AWK提供了极其强大的功能:可以进行样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。它具备了一个完整的语言所应具有的几乎所有精美特性。

实际上AWK的确拥有自己的语言:AWK程序设计语言,三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。

最简单地说,AWK是一种用于处理文本的编程语言工具。AWK在很多方面类似于shell编程语言,尽管AWK具有完全属于其本身的语法。它的设计思想来源于SNOBOL4、sed、MarcRochkind设计的有效性语言、语言工具yacc和lex,当然还从C语言中获取了一些优秀的思想。

在最初创造AWK时,其目的是用于文本处理,并且这种语言的基础是,只要在输入数据中有模式匹配,就执行一系列指令。

awk 命令

AWK

command 读前处理 行处理 读后处理

1、读前处理: BEGIN{awk_cmd1;awk_cmd2}

2、行处理:定址命令

定址方法:正则、变量、比较和关系运算

正则需要用//包围起来

awk -F: '/root/{print}' gad

awk -F: '$1~/root/{print}' gad 第一列匹配

awk -F: '$1~/root/{print}' gad 第一列匹配,锁定字符串匹配

awk -F: '$1!~/root/{print}' gad

. 除了换行符以外的任意单个字符

[] 字符组内的任一字符

[^]对字符组内的每个字符取反(不匹配字符组内的每个字符)

[ ] 非字符组内的字符开头的行

3、读后处理END{awk_cmd1;awk_cmd2}

awk -F "" '{for(i=1;i=NF;i++) print $i}' gad.txt 逐字换行

NF代表每行的元素个数

NR 表示AWK读入的行数 (一共处理多少行,无论多少个文件)

FNR表示读入行所在文件中的行数 (每个文件中有多少个文件)

1 1 AAAA

2 2 aaaa

3 3 a

4 1 bb

5 2 bbbbbbbb

赋值 = ++ -- += 。。。

awk 'BEGIN{a=1;print a++;print a}' 先执行命令然后a+1

|| 逻辑或 逻辑与 ! 取反

匹配正则或不匹配,正则需要用/正则/ 包围住

~ !~

关系比较字符串时要把字符串用双引号引起来

= = != ==

转义序列

\ \自身 $ 转义$ \t 制表符 \b 退格符 \r 回车符 \n 换行符 \c 取消换行

-v可以借用此方式从shell变量中引入

a=root

awk -v var=$a -F':' '$1==var{print $1}' passwd

a= whoami ; awk -v var=$a -F':' '$1==var{print $3,$6}' /etc/passwd

FS 定义字段分隔符,默认为一个空格

OFS 输出的字段分隔符,默认为一个空格

root-0-root

bin-1-bin

root@@0##root

bin@@1##bin

RS 记录分隔符,默认为一个换行符

head -2 /etc/passwd | awk 'BEGIN{ RS=":"}{print}' 把:号换成了换行符

ORS 输出的记录分隔符,默认为一个换行符

head -2 /etc/passwd | awk 'BEGIN{ ORS="-"}{print}' 把换行符换成了 - 号

FILENAME 文件名

ARGC 命令行参数个数

ARGV 命令行参数排列

ENVIRON 输出系统环境变量

root

linux awk命令详解

awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在对数据分析并生成报告时,显得尤为强大。

简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

awk有三个不同的版本:awk、nawk和gawk,未作特别说明,一般指gawk,gawk是awk的GNU版本。

之所以叫awk是因为其取了三位创始人Alfred Aho,Peter Weinberger,和Brian Kernighan的Family

Name的首字符。

awk格式:

格式: sed -n '3p' sed.txt

找谁干啥(条件动作)

awk格式

#取出/etc/passwd 第1行的第1列和第3列

awk -F: 'NR==1{print $1,$3}' /etc/passwd

awk 选项 '条件{动作}' /etc/passwd

条件: 哪一行,过滤什么内容

动作: print输出与显示 ,计算....

awk取行:与sed类似

案例01:取出sed.txt的第2行

[root@oldboy81-golden-lnb /oldboy]# cat sed.txt

101,oldgirl,CEO

102,zhangya,CTO

103,lidao007,COO

104,yy,CFO

105,feixue,CIO

110,lidao,COCO

[root@oldboy81-golden-lnb /oldboy]# awk 'NR==2' sed.txt

102,zhangya,CTO

#awk '行号 等于 2' sed.txt

#NR awk内置变量

Number of Record 记录号(行号)

案例02:取出sed.txt中包含oldboy或lidao的行

[root@oldboy81-golden-lnb /oldboy]# sed -rn '/oldboy|lidao/p' sed.txt

103,lidao007,COO

110,lidao,COCO

[root@oldboy81-golden-lnb /oldboy]# awk '/oldboy|lidao/' sed.txt

103,lidao007,COO

110,lidao,COCO

案例03:取出文件第2行到第5行内容

#awk '行号大于等于2 并且 行号小于等于5' sed.txt

#方法01

awk 'NR=2 NR=5' sed.txt #必会

表示并且.

#方法02

sed -n '2,5p' sed.txt

#方法03 了解

awk 'NR==2,NR==5' sed.txt #从行号是2的行开始 到 行号是5的行结束( 了解)

案例04:取出文件第3行到最后一行内容

[root@oldboy81-golden-lnb /oldboy]# awk 'NR = 3' sed.txt

103,lidao007,COO

104,yy,CFO

105,feixue,CIO

110,lidao,COCO

[root@oldboy81-golden-lnb /oldboy]# sed -n '3,$p' sed.txt

103,lidao007,COO

104,yy,CFO

105,feixue,CIO

110,lidao,COCO

案例05:取出从包含oldboy的行到lidao的行

[root@oldboy81-golden-lnb /oldboy]# cat sed.txt

101,oldgirl,CEO

102,zhangya,CTO

103,lidao007,COO

104,yy,CFO

105,feixue,CIO

110,lidao,COCO

root@oldboy81-golden-lnb /oldboy]# sed -n '/old/,/lidao/p' sed.txt

101,oldgirl,CEO

102,zhangya,CTO

103,lidao007,COO

[root@oldboy81-golden-lnb /oldboy]# awk '/old/ , /lidao/' sed.txt

101,oldgirl,CEO

102,zhangya,CTO

103,lidao007,COO

awk命令(awk命令最后一个) 第1张

awk命令详解是怎么样的?

awk:用于一行中分成数个“字段”来处理。适合处理 小型数据。

运行模式:awk '条件类型1{动作1} 条件类型2{动作2} ...' filename。

# last | awk '{print $1 "\t" $3}' == 查看登录者的数据,只显示登录名和ip地址,并以[tab]隔开

awk 的内置变量。

变量名称 代表的含义

NF 每一行($0)拥有的字段总数

NR 当前 awk 所处理的是 “第几行” 数据

FS 当前分隔符,默认空格键

awk 的逻辑运算符

特点

AWK是一种优良的文本处理工具。它不仅是 Linux 中也是任何环境中现有的功能最强大的数据处理引擎之一。这种编程及数据操作语言(其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母)的最大功能取决于一个人所拥有的知识。AWK 提供了极其强大的功能:可以进行样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。

发表评论: