Chinaunix首页 | 论坛 | 博客

lmk

  • 博客访问: 162310
  • 博文数量: 32
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 87
  • 用 户 组: 普通用户
  • 注册时间: 2013-03-17 19:07
文章分类

全部博文(32)

文章存档

2017年(2)

2016年(3)

2014年(14)

2013年(13)

我的朋友

分类: LINUX

2014-05-03 12:47:01

awk主循环负责自动读取给定文件名中的文本行。BEGIN段在主循环之前被执行。END段在主循环之后被执行。

awk命令由模式动作组成。awk模式支持基本正则表达式和扩展的正则表达式。grep和sed只支持基本的正则表达式。


awk的调用方法:
1.在shell命令行输入命令调用awk
awk   [-F 域分隔符]   'awk命令'   inputfile           注意:awk命令需要使用引号引起来,域分隔符可以使用基本和扩展的正则表达式
2.将awk命令放入脚本文件中,然后通过awk命令调用此脚本文件
awk  -f   awk脚本文件  inputfile
3.将awk命令放入脚本文件中,然后使该脚本文件可执行,然后直接运行该脚本文件。
./awk脚本文件  inputfile                   注意:此时的脚本文件开头需要加上#!/bin/awk  -f

第一种调用
awk  '/^$/{print "This is a blank line."}'  inputfile
模式和动作以/分隔。^$是模式,{}内是动作

第二种调用
cat  love.awk
/^$/{print "This is a blank line."}
awk  -f  love.awk  inputfile

第三种调用
cat  love.awk
#!/bin/awk  -f
/^$/{print "This is a blank line."}
chmod 777 love.awk
./love.awk  inputfile

awk将每个输入文件行定义为记录,行中的每个字符串定义为。域之间用空格,tab,或者其他符号分隔,分隔域的符号叫分隔符
$1表示第一个域,$2表示第二个域,$0表示所有的域。awk的默认分隔符是空格键。

awk关系运算符:
~      匹配正则表达式
!~   不匹配正则表达式

awk系统变量
$n   当前记录的第n个域,域间由FS分隔
$0   记录的所有域
ARGC   命令行参数的数量
ARGIND   命令行中当前文件的位置(以0开始标号)
ARGV    命令行参数的数组
CONVFMT   数字转换格式
ENVIRON    环境变量关联数组
ERRNO     最后一个系统错误的描述
FILEDWIDTHS   字段宽度列表,以空格键分隔
FILENAME    当前文件名
FNR    浏览文件的记录数
FS    字段分隔符,默认是空格键
IGNORECASE    布尔变量,如果为真,则进行忽略大小写的匹配
NF   当前记录中的域数量
NR   当前记录数
OFMT  数字的输出格式
OFS 输出域分隔符,默认是空格键
RLENGTH  有match函数所匹配的字符串长度
RS  记录分隔符,默认是空格键
RSTART    有match函数所匹配的字符串的第一个位置
SUBSEP    数组下标分隔符,默认值是\034

内置字符串函数
gsub(r,s)   在输入文件中用s替换r
gsub(r,s,t)   在t中用s替换r
index(s,t)   返回s中字符串第一个t的位置
length(s)   返回s的长度
match(s,t)  测试s是否包含匹配t的字符串
split(r,s,t)   在t上将r分成序列s
sub(r,s,t)   将t中第一次出现的r替换为s
substr(r,s)   返回字符串r中从s开始的后缀部分
substr(r,s,t)   返回字符串r中从s开始长度为t的后缀部分 











 
阅读(1643) | 评论(0) | 转发(0) |
0

上一篇:sed命令

下一篇:Ubuntu下安装OpenSSH Server

给主人留下些什么吧!~~