系统之家 - 系统光盘下载网站!

当前位置:系统之家 > 系统教程 > Linux使用文本处理工具awk

Linux如何使用文本处理工具awk(4)

时间:2015-01-14 18:22:52 作者:qipeng 来源:系统之家 1. 扫描二维码随时看资讯 2. 请使用手机浏览器访问: https://m.xitongzhijia.net/xtjc/20150114/34882.html 手机查看 评论

  awk ’BEGIN {FS=“:”; print FILENAME} {print FILENAME}‘ /etc/passwd #FILENAME,$0-$N,NF 不能使用在BEGIN中,BEGIN中不能获得任何与文件记录操作的变量。

  h.获得linux环境变量(ENVIRON)

  awk ’BEGIN {print ENVIRON[“PATH”];}‘ /etc/passwd #ENVIRON是子典型数组,可以通过对应键值获得它的值。

  i.输出数据格式设置(OFMT)

  awk ’BEGIN {OFMT=“%.3f”; print 2/3,123.11111111;}‘ /etc/passwd #OFMT默认输出格式是:%.6g 保留六位小数,这里修改OFMT会修改默认数据输出格式

  j.按宽度指定分隔符

  echo 20100117054932 | awk ’BEGIN {FIELDWIDTHS=“4 2 2 2 2 3”} {print $1“-”$2“-”$3,$4“:”$5“:”$6}‘ #FIELDWIDTHS其格式为空格分隔的一串数字,用以对记录进行域的分隔,FIELDWIDTHS=“4 2 2 2 2 2”就表示$1宽度是4,$2是2,$3是2 。。.。 。这个时候会忽略:FS分隔符

  k.RSTART RLENGTH

  awk ’BEGIN{start=match(“this is a test”,/[a-z]+$/); print start, RSTART, RLENGTH }‘

  awk ’BEGIN{start=match(“this is a test”,/^[a-z]+$/); print start, RSTART, RLENGTH }‘ #RSTART被匹配正则表达式首位置,RLENGTH匹配字符长度,没有找到为-1.

  2.获取外部变量

  a.获取普通的外部变量

  test=’awk code‘

  echo | awk ’{print test}‘ test=“$test”

  echo | wawk ’BEGIN {print test}‘ test=“$test” #传入的变量可以在action中获取值,但是变量名与值放到’{action}‘后边。其中BEGIN的action是不能获得

  b.BEGIN程序块的变量

  test=’awk code‘

  echo | awk -v test=“$test” ’BEGIN {print test}‘

  echo | awk -v test=“$test” ’{print test}‘ #用-v 传入变量可以在3中类型的action 中都可以获得到,但顺序在 action前面

  c.获得环境变量

  awk ’BEGIN {for (i in ENVIRON) {print i“=”ENVIRON[i];}}‘

  3.运算符

  a.赋值运算符、算术运算

  echo | awk ’BEGIN {a=1; b=5; c=3} {a+=5; b++; c--} END {print a, b, c, a*b}‘

  b.逻辑运算符

  awk ’BEGIN {a=1; b=2; print (a》5 && b《=2),(a》5 || b《=2);}‘

  c.关系运算符

  awk ’BEGIN{a=“11”;if(a 》= 9){print “ok”;}}‘ #》 《 可以作为字符串比较,也可以用作数值比较,关键看操作数如果是字符串 就会转换为字符串比较。两个都为数字 才转为数值比较。字符串比较:按照ascii码顺序比较

  d.其它运算符

  awk ’BEGIN {a=“b”; print a==“b” ? “ok” : “err”;}‘ #三目运算

  awk ’BEGIN {a=“b”; arr[0]=“b”; arr[1]=“c”; print (a in arr);}‘ #判断数组中是否存在该键值

  3.字符操作

  a.字符串转数字

  awk ’BEGIN {a=“100”; b=“10test10”; print (a+b+0);}‘

  awk ’BEGIN {a=“100”; b=“10test10”; print a+b+0;}‘

  b.数字转字符串

  awk ’BEGIN {a=100; b=100; c=(a“”b); print c}‘

  awk ’BEGIN {a=100; b=100; c=a“”b; print c}‘

  c.字符串连接

  awk ’BEGIN {a=“a”; b=“b”; c=a“”b; print c}‘

  3.数组操作

  a.赋值

  awk ’BEGIN {tB[“a”]=“a1”; tB[“b”]=1;}‘

  b.数组长度(length)

  awk ’BEGIN {tB[“a”]=“a1”; tB[“b”]=1; print length(tB)}‘

  awk ’BEGIN {info=“it is a test”; split(info,tA,“ ”); print asort(tA);}‘ #asort对数组进行排序,返回数组长度

标签 命令

发表评论

0

没有更多评论了

评论就这些咯,让大家也知道你的独特见解

立即评论

以上留言仅代表用户个人观点,不代表系统之家立场

其他版本软件

热门教程

人气教程排行

Linux系统推荐

扫码关注
扫码关注

扫码关注 官方交流群 软件收录