`

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

}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics