SHELL学习笔记——awk编程

awk功能和sed类似,都是进行文本处理的,awk可以从文件或字符串中基于指定规则抽取信息。

1、awk编程模型

awk程序由一个主输入循环维持,主输入循环反复执行,直到终止事件被触发。

awk定义了两个特殊的字段:BEGIN和END,BEGIN用于在主输入循环之前执行,END用于在循环之后执行。

2、调用方法

awk [-F 域分界符] ‘awk程序段’ 输入文件

awk -f awk脚本文件 输入文件

./awk脚本文件 输入文件

3、实际例子

a) awk模式匹配

任何awk语句都有模式和动作组成。模式是一组用于测试输入行是否要执行动作的规则。

打印空白行

awk '/^$/{print "this is a blank line."}' input

b)  记录和域

分隔符

awk ‘{print $2,$1,$3,$3}‘ sturecord

awk '{print $0} sturecord 

$1代表域

$0代表整体

awk 'BEGIN{one=1;two=2}{print $(one+two)}' struecord

-F选项改变分隔符

awk -F"\t" '{print $3}' struecord

FS改变分隔符

awk 'BEGIN {FS=','} {print $0}' sturecord

c) 关系和布尔运算符

~匹配正则表达式

!~不匹配正则表达式

!=不等于

==等于

awk 'BEGIN {FS=":"} $1~/root/' /etc/passwd   第一域匹配root

awk 'BEGIN {FS=":"} $0~/root/' /etc/passwd  全部域匹配root
awk 'BEGIN {FS=":"} $0!~/root/' /etc/passwd  全部域匹配root

awk 'BEGIN {FS=":"} {if($3<$4 print $0)}' /etc/passwd  全部域匹配root

d)表达式

awk '/^$/{print x++}' input 匹配空白行

e)环境变量

$n $0 ARGC ARGIND ARGV FILENAME FNR(浏览文件的记录数) FS NF NR(当前记录数)………………

f)格式化输出

printf 参考C语言

g)内置字符串函数

gsub替换

index(s,t) 返回s中字符串第一个个t的位置

length(s) 返回s长度

match(s,t)测试s是否包含匹配t的字符串

awk 'BEGIN {FS=":";OFS=":"} gsub (/root/,"gridsphere",$1) {print $0}' /etc/passwd

f)向awk脚本传递参数

awk 脚本 parameter=value 输入文件


































'





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值