awk和gawk的内部变量

FILENAME 当前文件名

FS  字段分割符(默认为一个空格)

NF 当前记中的字段个数。

OFMT 数字的输出格式(默认为%6):负责print语句的格式转换和将数字转换为字符串。

OFS 输出字段分隔符(默认为一个空格)

ORS 输出记录分隔符(默认为一个换行符)

RS 记录分割符(默认为一个换行符)

gawk的增加的变量

ARGING 当前输入文件的的ARGV的引索。

ERRNO 当前getline或close()失败时的描述信息。

FIELDWIDTHS 用空格分隔的数据列表,用于描述输入字段的宽度。

IGNORECASE 如果不为0,模式匹配和字符串比较是不分大小写的

RT 和RS匹配的输入文本的值(默认什么也没有)

可以使用RS和ORS实现s/old/new/g 的替换形式。但存在在打印的最后有ORS的值。

$awk -f simplesed.awk RS="old|OLD" ORS="brand new" simplesed.data

即可实现把simplesed.data 的“old|Old”替换为“brand new”

$cat simplesed.awk

{

 if (RT == "  ")

        print  $0

 else

        print $0


}

$cat simplesed.data

The OLD house" old old OLD is a great show.

I like shopping for old things at garage sales.


liuuliuliuliu great company! old

I like

其结果会在末尾多出一个brand new ,经过测试发现,RT在本测试中打印出来是当前的RS每次所匹配的值,若是不在awk的主循环体中,则RT打印无结果。

但我发现在最后的一次匹配上,若是有{print RT,RT,RT,$0},则不会出现重复的RT值,并且在结果中显示的是先ORS后RT

其原因是RT打印的是下一次的值,并且只有第一次是在最前面,其他时候在RS值的后面;{print $0,RT,RT,RT}则会在输出时把RT的放在RS匹配值的前面。




转载于:https://my.oschina.net/wangzongtao/blog/634296

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值