gawk基础

原创 2015年11月20日 10:24:09

gawk和awk基本是一样的,而且在现在的linux系统上,awk和gawk命令其实是指向同一个程序的。以前写过awk基础,有很多地方都没写清楚,所以补写一篇。
所使用的测试文件名为test.txt,其内容如下

animal1
name:dog
color:black

animal2
name:cat
color:white

animal3
name:pig
color:white

1.常用的内建变量

字段和数据行分隔符变量

变量 描述
FIELDWIDTHS 由空格分隔开的定义了每个数据字段确切宽度的一列数字
FS 输入字段分隔符(默认为空格)
RS 输入数据行分隔符(默认为换行)
OFS 输出字段分隔符(默认为空格)
ORS 输出数据行分隔符(默认为换行)

gawk ‘BEGIN{FS=”:”;OFS=”->”}{print $1,$2}’ test.txt
结果为

animal1->
name->dog
color->black
->
animal2->
name->cat
color->white
->
animal3->
name->pig
color->white

gawk ‘BEGIN{FIELDWIDTH=”4 1 5”}{print $1,$2,$3}’ test.txt
结果为

anim a l1
name : dog
colo r :blac

anim a l2
name : cat
colo r :whit

anim a l3
name : pig
colo r :whit

gawk ‘BEGIN{FS=”\n”;RS=”“}{print $2,$3}’ test.txt
结果为

name:dog color:balck
name:cat color:white
name:pig color:white

gawk ‘BEGIN{FS=”\n”;RS=”“;ORS=”->”}{print $2,$3}’ test.txt
结果为

name:dog color:balck->name:cat color:white->name:pig color:white->

通过这几个例子应该很容易理解这几个变量的功能了,接下来我们来看一些数据变量

数据变量

变量 描述
ARGC 当前命令行参数个数
ARGIND 当前文件在ARGV中的位置
ARGV 包含命令行参数的数组
CONVFMT 数字的转换格式(默认为%.6g)
ENVIRON 当前shell环境变量及其值组成的关联数组
ERRNO 当读取或关闭输入文件发生错误时的系统错误号
FILENAME 用作gawk输入数据的数据文件的文件名
FNR 当前数据文件中的数据行数
IGNORECASE 设成非零值时,忽略gawk命令中出现的字符串的字符大小写
NF 数据文件的字段总数
NR 已处理的输入数据行数目
OFMT 数字的输出格式(默认值为%.6g)
RLENGTH 由match函数所匹配的子字符串的长度
RSTART 由match函数所匹配的子字符串的起始位置

gawk ‘BEGIN{print ARGC,ARGV[0],ARGV[1]}’ test.txt
结果为

2 gawk test.txt

gawk ‘BEGIN{print ENVIRON[“HOME”]}’
我的结果为

/home/wpp

gawk -F: ‘{print NF,$NF}’ test.txt
结果为

1 animal1
2 dog
2 black
0
1 animal2
2 cat
2 white
0
1 animal3
2 pig
2 white

gawk ‘{print “FNR=”FNR,”NR=”NR}’ test.txt test.txt
结果为

FNR=1 NR=1
FNR=2 NR=2
FNR=3 NR=3
FNR=4 NR=4
FNR=5 NR=5
FNR=6 NR=6
FNR=7 NR=7
FNR=8 NR=8
FNR=9 NR=9
FNR=10 NR=10
FNR=11 NR=11
FNR=1 NR=12
FNR=2 NR=13
FNR=3 NR=14
FNR=4 NR=15
FNR=5 NR=16
FNR=6 NR=17
FNR=7 NR=18
FNR=8 NR=19
FNR=9 NR=20
FNR=10 NR=21
FNR=11 NR=22

2.自定义变量

gawk ‘BEGIN{a=1;b=”hello”;print a,b}’
结果为

1 hello

假如我们有一个名字为scriptawk的脚本,其内容如下

BEGIN{FS=”:”;print n}
{print $n}

我们执行gawk -f scriptawk n=1 test.txt
结果为


animal1
name
color

animal2
name
color

animal3
name
color

我们执行gawk -f scriptawk n=2 test.txt


dog
black


cat
white


pig
white

我们执行gawk -v n=2 -f scriptawk test.txt
结果为

2

dog
black


cat
white


pig
white

注意上面多出的2,这是因为当我们以n=2的方式定义变量时,BEGIN语句会在变量定义前执行,而以-v n=2的方式定义时,BEGIN会在定义后执行。

3.模式匹配

gawk -F: ‘/nam/{print $2}’ test.txt
结果为

dog
cat
pig

gawk -F: ‘$1~/nam/{print $2}’ test.txt
结果为

dog
cat
pig

gawk -F: ‘$1==”nam”{print $2}’ test.txt
结果为空

gawk -F: ‘$1==”name”{print $2}’ test.txt
结果为

dog
cat
pig

需要注意的是~是模糊匹配,==是精确匹配

gawk -F: ‘!/nam/{print $2}’ test.txt

animal1
color:black

animal2
color:white

animal3
color:white

说明:!表示不匹配

版权声明:

相关文章推荐

Shell 之 gawk (一)基础篇

一、命令格式 gawk options program file  gawk选项: -F  fs    指定描述一行中数据字段的文件分隔符 -f  file    指定读取程序的文件名 -v  v...

第7章 sed、gawk介绍与正则表达式-----------(sed编辑器基础知识)

7.3sed编辑器基础知识          成功使用sed编辑器的关键是要了解其大量的命令和格式,这些命令和格式有助于自定义文本编辑。 7.3.1更多替换选项     &#...

gawk-3.1.8.tar.gz

  • 2017-08-26 22:33
  • 2.51MB
  • 下载

GNU-GAWK-effective_AWK_programming

  • 2014-08-08 19:10
  • 1.39MB
  • 下载

awk、gawk、nawk、mawk的简单介绍

awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出(即管道)。它支持用户自定义函数和 动态正则表达式等先进功能,是linu...

gawk-4.1.3.tar.gz

  • 2015-09-23 14:27
  • 4.20MB
  • 下载

gawk使用方法

  • 2014-09-18 19:24
  • 20KB
  • 下载

gawk详解

【gawk 是 GNU 的 awk,具有很强的文本处理功能,简洁优美。】 第一章 前言 第二章 简介 第三章 读取输入档案 第四章 印出 第五章 Patterns 第六章 算式(Exp...

effective gawk programming

  • 2009-01-10 00:21
  • 2.06MB
  • 下载

GAWK: Effective AWK Programming

  • 2012-10-23 10:48
  • 2.20MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)