首页 > 分享 > Awk练习笔记

Awk练习笔记

 M.Tansley   05/99   48311   Green   8   40  44 L.Lulu  06/99   48317   green   9   24  26 P.Bunny 02/99   48  Yellow  12  35  28 J.Troll 07/99   4842    Brown-3 12  26  26 L.Tansley   05/99   4712    Brown-2 12  30  28  ***【条件操作】***  awk 匹配 1、模糊匹配  J.Troll 07/99   4842    Brown-3 12  26  26 L.Tansley   05/99   4712    Brown-2 12  30  28 2、精确匹配  J.Troll 07/99   4842    Brown-3 12  26  26  awk 不匹配  M.Tansley   05/99   48311   Green   8   40  44 L.Lulu  06/99   48317   green   9   24  26 P.Bunny 02/99   48  Yellow  12  35  28   M.Tansley   05/99   48311   Green   8   40  44 L.Lulu  06/99   48317   green   9   24  26 P.Bunny 02/99   48  Yellow  12  35  28 (默认情况下,awk将会打印所有匹配记录,因此这里不必加入动作部分!)  awk小于  M.Tansley   05/99   48311   Green   8   40  44  M.Tansley Try better at next comp L.Lulu  06/99   48317   green   9   24  26  L.Lulu Try better at next comp  awk 小于等于  M.Tansley   05/99   48311   Green   8   40  44 L.Lulu  06/99   48317   green   9   24  26 J.Troll 07/99   4842    Brown-3 12  26  26  awk 匹配大小写  M.Tansley   05/99   48311   Green   8   40  44 L.Lulu  06/99   48317   green   9   24  26  awk 任意字符(第四个字符是a的行)  M.Tansley   05/99   48311   Green   8   40  44 L.Tansley   05/99   4712    Brown-2 12  30  28  awk 或者  P.Bunny 02/99   48  Yellow  12  35  28 J.Troll 07/99   4842    Brown-3 12  26  26 L.Tansley   05/99   4712    Brown-2 12  30  28  awk 行首   awk 逻辑关系 && || ! 1、与逻辑  L.Lulu  06/99   48317   green   9   24  26  2、或逻辑  L.Lulu  06/99   48317   green   9   24  26 J.Troll 07/99   4842    Brown-3 12  26  26 L.Tansley   05/99   4712    Brown-2 12  30  28  3、非逻辑  M.Tansley   05/99   48311   Green   8   40  44 P.Bunny 02/99   48  Yellow  12  35  28 L.Tansley   05/99   4712    Brown-2 12  30  28  ***【awk内置变量】 ARGC(命令行参数个数)   AWK脚本参数个数 ARGV(命令行参数排列)   ARGV[n] ENVIRON(支持系统环境变量设置) FILENAME(awk浏览的文件名)告知系统目前正在浏览的实际文件 FNR(浏览文件的记录数)    FS(域分割符)        -F NF(浏览记录的域个数)    支持记录域个数 NR(已读的记录数)       OFS(输出域分割符) 默认为空格,如果想设置为 ORS(输出记录分割符)    默认为新行 n RS(控制记录分割符) 默认为新行 n  1、NF。NR。FILENAME  7 1 M.Tansley   05/99   48311   Green   8   40  44  (域个数,已读记录数) 7 2 L.Lulu  06/99   48317   green   9   24  26 7 3 P.Bunny 02/99   48  Yellow  12  35  28 7 4 J.Troll 07/99   4842    Brown-3 12  26  26 7 5 L.Tansley   05/99   4712    Brown-2 12  30  28 file    (文件名)   J.Troll 07/99   4842    Brown-3 12  26  26 L.Tansley   05/99   4712    Brown-2 12  30  28   gls-makebridge  ***【awk操作符】*** = += *= /= %= ^= 赋值操作符 ? 条件表达操作符 || && ! 或与非 ~ !~ 匹配与不匹配 < <= == != >> 关系操作符 + - * / % ^ 算数操作符 + + -- 前缀和后缀  1、设置变量名  M.Tansley is belt Green L.Lulu is belt green P.Bunny is belt Yellow J.Troll is belt Brown-3 L.Tansley is belt Brown-2   P.Bunny is belt Yellow  2、域值比较 a、在BEGIN中给变量赋值  (很有益的) b、在关系操作中使用实际数值  (使用关系操作必须用圆括号括起来)   L.Lulu  06/99   48317   green   9   24  26 J.Troll 07/99   4842    Brown-3 12  26  26   L.Lulu  06/99   48317   green   9   24  26 J.Troll 07/99   4842    Brown-3 12  26  26  3、修改数值域取值 找出名字为M.Tansley的人,将他的成绩减1.  M.Tansley 39 44 (之前为40,现在为39) L.Lulu 24 26 P.Bunny 35 28 J.Troll 26 26 L.Tansley 30 28  4、修改文本域 将J.Troll修改为J.L.Troll    (字符串要是用双秒号“”)  M.Tansley L.Lulu P.Bunny J.L.Troll   (已经改过了) L.Tansley  5、只显示修改过的记录 (注意是花括号,合并命令)  J.L.Troll  6、创建新的输出域 创建域8保存目前级别分与域最高级别分的减法值  Name    Differents M.Tansley   4 L.Lulu  2  7、增加列值  (统计总分)  如果只想看结果而不打印其它的,那就这样   8、文件长度增加    (查看文件名及对应的文件大小,最后统计总大小)  RH255-10_系统监控和日志.pdf    224733 RH255-11_集中和安全存储.pdf    279593 RH255-12_通过SSL封装的WEB服务.pdf  403115 RH255-13_WEB服务器其他配置.pdf 221958 RH255-14_基本SMTP配置.pdf   320628 RH255-15_仅缓存DNS服务器.pdf  213914 RH255-16_通过NFS共享文件.pdf  228612 RH255-17_通过CIFS共享文件.pdf 215369 RH255-18_通过FTP共享文件.pdf  128581 RH255-19_对引导过程进行故障排除.pdf    200583 RH255-1_从教室环境入门.pdf 242201 RH255-2_增强用户安全.pdf  264396 RH255-3_BASH脚本编程和工具.pdf 340625 RH255-4_通过GNUPG保护文件安全.pdf   185014 RH255-5_包管理.pdf 272382 RH255-6_网络监控.pdf    203533 RH255-7_高级网络配置.pdf  255007 RH255-8_保护网络通信.pdf  317654 RH255-9_NTP服务器配置.pdf    189784 total KB: 4707682  ***【内置的字符串函数】*** gsub(r,s)   在整个$0中用s替代r gsub(r,s,t) 在整个t中用s替代r index(s,t)  返回s中字符串t的第一位置 length(s)   返回s长度 match(s,r)  测试s是否包含匹配r的字符串 split(s,a,fs)   在fs上将s分成序列a sprint(fmt,exp) 返回经fmt格式化后的exp sub(r,s)    用$0中最左边最长的子字符串代替s substr(s,p) 返回字符串s中从p开始的后缀部分 substr(s,p,n)   返回字符串s中从p开始长度为n的后缀部分  gsub函数有点类似于sed查找和替换。第一个函数作用于记录$0,第二个函数gsub函数允许指定目标。未指定目标则默认为 $0. index(s,t)函数返回目标字符串s中查询字符串t的首位置.length函数返回字符串s字符长度. split使用域分割符fs将字符串s划分为指定序列a。  1、gsub  (目标模式/,替换为/)  J.Troll 07/99   4899    Brown-3 12  26  26  2、index (必须用双引号将字符串括起来)  4  3、length (返回所需字符串的长度)  7   J.Troll  14  4、match (测试目标字符串中是否包含查找字符的一部分)  0  4  4  5、split (返回字符串数组元素个数)  3  6、substr (按照起始位置及长度返回字符串的一部分)  利用这个截取可以小试一下截取ip: a、 br0       Link encap:Ethernet  HWaddr 00:1E:37:D2:9F:FD             inet addr:192.168.0.24  Bcast:192.168.0.255  Mask:255.255.255.0           inet6 addr: fe80::21e:37ff:fed2:9ffd/64 Scope:Link           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1           RX packets:402571 errors:0 dropped:0 overruns:0 frame:0           TX packets:202353 errors:0 dropped:0 overruns:0 carrier:0           collisions:0 txqueuelen:0            RX bytes:386613583 (368.7 MiB)  TX bytes:17539566 (16.7 MiB)  b、 192.168.0.24   Tansley Lulu Bunny Troll Tansley   GOOD MEN    (将字符串str从第七位开始截取,结果是”GOOD MEN“)  8、从shell中想awk传入字符串  13  8  4  设置一文件名为变量,管道输出到awk.   mydoc   ***【字符串屏蔽序列】*** b 退格键  t tab键 f 走纸换页 ddd 八进制值   n 换行       c 任意其它字符 r 回车键    May Day  May Day (104为D的八进制ASCII码,141为a,171为y)  ***【awk输出函数printf】*** [修饰符] - 左对齐       Width 域的步长,用0表示0步长  .prec 最大字符串长度,或小数点右边的位数 [格式] %c ASCII码字符 %d 整数       %e 浮点数,科学计数法 %f 浮点数,如1.23 %g awk决定使用哪种浮点数    %o 八进制数 %s 字符串  %x 十六进制数  1、字符转换  A   999.000000  2、格式化输出 要求名字左对齐,15个字符长度,后跟序列号。  M.Tansley            48311      8   ($1-$3间距20个字符) L.Lulu               48317      9 P.Bunny               48     12 J.Troll              4842     12 L.Tansley            4712     12 修饰一下:  Name    S   Number  (多一行注释) M.Tansley  48311      8 L.Lulu     48317      9 P.Bunny     48     12 J.Troll    4842     12 L.Tansley  4712     12  3、向一行awk命令传值 命令: awk 命令变量=输入文件值  M.Tansley   05/99   48311   Green   8   40  44 L.Lulu  06/99   48317   green   9   24  26   /dev/sda1   35240   (查看可用空间小于65M的分区)   root is logged on   root you are connected to tty1  (效果等价于上面,这里是传递参数)  4、awk脚本文件   ! /bin/gawk -f    BEGIN{ print "Student  Date    Member  No.Grade  Age   Points  Max" print "Name     Joined                          Gained  Point Available" print "================================================================"  }  (tot+=$6)   END{print "Club student total points: " tot         print "Average Club Student points: " tot/NR}  5、在awk中使用FS变量  !/usr/bin/awk -f BEGIN{ FS=":"} {print $1,"t",$5}  6、向awk脚本传值 awk script_file var=value input_file =========================   !/usr/bin/awk -f NF!=MAX{ print("line " NR "does not have "MAX" fields")}   =========================  !/usr/bin/awk -f {if($5 < age)  print $0}   =========================   !/usr/bin/awk -f BEGIN{ OFS="t" ; print "name" "tt","bytes","blocksn" print "=============================="} {print $2,"tt",$1*512,$1}   =========================  9、awk数组    BEGIN{ record="123#456#789"; split(record,myarray,"#")}  END{for(i in myarray) {print myarray[i]}}   ========================= 

2012-3-20练习笔记

转载于:https://blog.51cto.com/linuxkeep/811671

相关知识

Awk练习笔记
「插花笔记 Vol.10」春日花园
我的养花笔记
我的花草笔记第6波
双人空翻、执信学霸笔记被奶茶换走 高考花式结束
生物圈中的其他生物单元练习资料优选
幼儿园课程练习及答案
「花艺笔记 Vol.8」捡到了一个冬天
工作碰上的技术问题及处理经验
花儿笔记

网址: Awk练习笔记 https://m.huajiangbk.com/newsview104408.html

所属分类:花卉
上一篇: 2023最全软件测试面试八股文(
下一篇: 数学之美系列