`

gawk的使用笔记

 
阅读更多

一、基础

1.程序格式

gawk options program file

-F:分隔符

-f: 文件

-v:变量

-mf: 最大字段数

-mr:最大行数

 

2.将命令放于花括号中

gawk '{...}'

 

3.字段变量

$0: 整行文本

$1...$n: 第n个字段

gawk -F: '{print $1}' /etc/passwd

echo "my name is sosop" | gawk '{$4="hsosop"; print $0}'

 

4.script

gawk -F: -f script1 /etc/passwd

 

script1:

{txt="the name of user is "; print txt $1}

 

5.处理数据前后运行脚本

gawk -F: 'BEGIN {print "before deal"} {print $1}' /etc/passwd

 

gawk 'BEGIN {print "BEGIN";a=10}{print a=a+1} END {print "END"}' /etc/passwd

 

二、进阶

1.变量

1.1、内建变量

FS: 输入字段分隔符

RS: 输入数据行分隔符

OFS: 输出字段分隔符

ORS: 输出数据行分隔符

FIELDWIDTHS: 分隔符空格  每个field的宽度

 

1.2、数据变量

FILENAME: 文件名

FNR: 当前文件行数

NF: 总字段数

NR: 已处理的行数

ARGC: 参数个数

ARGV[0]: 参数数组

ENVIRON["HOME"]

 

1.3、自定义变量

gawk -F: '{print $n}' n=1 /etc/passwd

 

2.数组处理

for(var in array) {

    do something ...

}

delete var["index"]

 

 

3.模式匹配

gawk '/root/ {print $0}' /etc/passwd

gawk '$1 ~ /^d/ {print $0}' /etc/passwd

gawk '$1 !~ /^d/ {print $0}' /etc/passwd

 

4.数学表达式

gawk -F: '$3 == 1000 {print $0}' /etc/passwd

==、>、<、>=、<=

 

5.结构化

gawk -F: '{
if ($3 > 100) {
  print $3
}

else

{

}
}' /etc/passwd

 

while(condition) {

    statements;

}

 

do {

    statements;

} while(condition)

 

for(i = 1; i < 10; i++) {

    statements;

}

 

printf: 跟C语言一样

 

6.内建函数

6.1、数学函数

atan2(x,y)  cos(x) sin(x) exp(x) int(x) log(x) rand() sqrt(x) srand(x)

 

6.2、字符串

asort(arr1[, arr2])  asorti(arr1[, arr2])  

gensub(reg, s, h [,target]) gsub(reg, s [, target])  sub(reg, s [, target])

index(s, t)  length([s])

match(reg, s [, arr])  

split(s, a [, reg]) 

substr(s, i [,n]) tolower(s) toupper(s)

 

6.3、时间函数

mktime(datespec)   strftime(format [,timestamp])   systime()

 

6.4、自定义函数

function name([var])

{

    statements

}

 

分享到:
评论

相关推荐

    gawk学习笔记正则表达式

    gawk正则表达式Regular ExpressionsRegular Expressions

    GAWK: Effective AWK Programming;AWK说明书

    它提供了awk语言的演变历史,安装gawk的说明,以及实现细节笔记。最后,还有基础编程概念的讨论,以及一个完整的词汇表(Gloss)。 在编程领域,GNU AWK(GAWK)是一门被广泛使用的语言,它特别适合于处理文本文件...

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

    最后,附录部分提供了关于awk语言演变的资料、gawk的安装指南、实现笔记和基本编程概念的简要介绍。这些附录为读者提供了深入理解和使用awk所需的额外信息。 总而言之,《GAWK: Effective AWK Programming - GNU ...

    awk学习使用笔记及举例

    ### awk学习使用笔记及举例 #### 1. awk简介 awk是一种专为文本处理而设计的编程语言,常用于Linux/Unix环境下。它可以处理来自标准输入、文件或其它命令输出的数据。awk支持用户自定义函数和动态正则表达式等功能...

    Shell脚本学习笔记

    1.4.2 使用df命令 26 1.4.3使用du命令 27 1.5 操作数据文件 28 1.5.1 数据排序(sort) 28 1.5.2 搜索数据 (grep) 30 1.5.3 压缩数据 30 1.5.4 归档数据(tar) 33 1.6 使用Linux环境变量 34 1.6.1 设置环境变量 34 ...

    openwrt,Lede深入学习笔记v2.0.pdf

    root@zjh-vm:/home/work# apt-get install subversion build-essential libncurses5-dev zlib1g-dev gawk git ccache gettext ``` 这些软件包的安装是为后续构建过程中的依赖关系做准备。如`libssl-dev`用于支持SSL...

    linux awk学习笔记

    在Linux系统中,通常使用的`awk`版本是GNU `awk`(gawk),它包含了一些扩展功能。 ### 1. `awk`简介 `awk`的工作方式是逐行扫描文件,根据用户定义的模式对匹配的行执行指定的操作。如果未指定模式,它会处理所有...

    Awk学习笔记和指南

    它在命令行中使用,但更多是作为脚本来使用。awk的处理文本和数据的方式是这 样的,它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作。如果没有指定处理动作,则把匹配的...

    petalinux创建笔记-长期维护版1

    【PetaLinux 创建笔记-长期维护版1】 PetaLinux 是一个专为Xilinx FPGA(现场可编程门阵列)系统芯片设计的嵌入式Linux系统开发工具包。该工具包提供了一整套流程,包括从项目初始化到构建完整的Linux系统镜像。...

    awk学习笔记

    它在命令行中使用,但更多是作为脚本来使用。awk的处理文本和数据的方式是这 样的,它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作。如果没有指定处理动作,则把匹配的...

    New SNMP开发笔记

    ### 新SNMP开发笔记知识点详解 #### 一、配置Ubuntu的编译环境 在进行SNMP(简单网络管理协议)相关的开发工作之前,首先需要在Ubuntu操作系统上搭建一个适合的编译环境。这一过程主要涉及以下几个步骤: 1. **...

    awk学习笔记.pdf

    使用AWK时,可以按照以下三种方式之一调用AWK命令: 1. 直接在命令行中嵌入AWK脚本,并指定输入文件。例如: ``` awk '[options] program-text file-list' ``` 其中,`[options]` 是AWK的常用选项,比如 `-F` ...

    awk学习笔记(简单易学)

    ### awk学习笔记精要 #### 1. awk简介 awk是一种功能强大的文本处理语言,主要用于在Linux/Unix环境中处理文本和数据。它能够从标准输入、文件或其它命令的输出中提取并处理数据,支持自定义函数和动态正则表达式...

    Cygwin2.416+NS2.28安装笔记

    在选择软件包时,要确保安装了ns2所需的必备组件,如`gcc`, `gcc-g++`, `gnuplot`, `make`, `more`, `patch`, `perl`, `tar`, `tcsh`, `gawk`, `gnuplot`, `gzip`和`XFree86-prog`等。 安装完成后,运行桌面的...

Global site tag (gtag.js) - Google Analytics