加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl语言中的AWK之基础篇

发布时间:2020-12-15 21:07:56 所属栏目:大数据 来源:网络整理
导读:perl 语言中的 AWK之基础篇 一 :AWK与perl 1.?Perl,我们并不陌生了到目前为止,它在web编程中的强大作用,对于每个web开发者而言,重要性不言而喻, 由于perl借取了C、sed、awk、shell?scripting以及很多其他程序语言的特性。 其中最重要的特性是它内部集成

perl 语言中的AWK之基础篇
:AWK与perl
 
 
  1. 1.?Perl,我们并不陌生了到目前为止,它在web编程中的强大作用,对于每个web开发者而言,重要性不言而喻,
  2. 由于perl借取了C、sed、awk、shell?scripting以及很多其他程序语言的特性。
  3. 其中最重要的特性是它内部集成了正则表达式的功能,以及巨大的第三方代码库CPAN。
  4. 简而言之,Perl?象C一样强大,象awk、sed等脚本描述语言一样方便,由此看来在perl语言中,AWK占据着重要的一席之地。
  5. 这里我们不去重点的说perl语句而是介绍一下其重要的组成部分AWK的基础内容,
  6. 下面我们就来揭开perl中的awk的神秘面纱吧!?
二:AWK简介
 
 
  1. what?is?awk??对于初学者来说这是个模式的代名词,其实awk是三位创造者Aho、Weinberger和Kernighan统称,
  2. 简单的来说AWK?是一种用于处理文本的编程语言工具??
  3. wk可以做些什么?由于其可以进行样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。
  4. 它具备了一个完整的语言所应具有的几乎所有精美特性,所以其三位创建者已将它正式定义为“样式扫描和处理语言”。
  5. 它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。??
三: AWK处理文本的流程:
 
 
  1. awk在处理文件时,首先扫描文件中的每一行,查找与命令行中所给定内容相匹配的模式。
  2. 如果发现匹配内容,则进行下一个编程步骤。如果找不到匹配内容,则继续处理下一行?
四: AWK的使用
 
 
  1. AWK的?语法格式:??
  2. Awk?[options]?‘scritpts’??filename??
  3. ?或者awk?[options]?‘partern?[actions]?’?filename??
  4. [options]:??
  5. -F:?指定awk?处理文本的行时的分隔符
?例如?

 
 
  1. 常用的awk内置的三个变量?OFS??FS??NF???
  2. -FS?指定字段分隔符
  3. 例如 ?
 
 
  1. Awk??-v?FS=:?‘{print?$2}’?/etc/passwd??

 
 
  1. -v?OFS=?定义awk?输出时的字符分隔符?
  2. 例如:?Awk?–v?OFS=#?‘{print?$1,$2}’?/etc/passwd

 
 
  1. 注:上例中的在输入$1和$2,$1,$2的形式是分别输出$1和$2.?$1?$2的形式是将$1和$2合并后输出??
  2. 如??

 
 
  1. ?NF?表示awk处理一行时的字段总数??
  2. ?例如:输出一行的最后一个字段??
  3. Awk?‘{print?$NF}’?/etc/passwd?

 
 
  1. 注:显示一行的倒数第三个字段???

 
 
  1. printf?的使用??
  2. 格式:printf?format?item1,item2,……??
  3. ?注意:??
  4. 1:与print命令的最大不同是,printf?需要指定format??
  5. 2:format用于指定后面的每个item的输出格式??
  6. 3:printf语句不会自动打印换行符?n??
  7. 4:format格式的指示符都以%开头,后跟一个字符??
  8. format:??
  9. %c?:显示字符的ASCII码??
  10. %d,%i?:显示字符的十进制整数??
  11. %e,$E?科学计数法显示数值??
  12. %f?:显示浮点数??
  13. %g?,%G?:以科学计数法的格式或者浮点数的格式显示数值??
  14. %s??显示字符串??
  15. %u??显示无符号整数??
  16. %%?显示%自身??
  17. 另外format?还可以添加修饰符??
  18. N:显示宽度??
  19. -:左对齐??
  20. +:显示数值符号??
  21. 例如:?

 
 
  1. Awk?中使用?输出重定向??
  2. print?items?>?output-file??
  3. print?items?>>?output-file??
  4. print?items?|?command???
awk的操作符:?
 
 
  1. 算术操作符:??
  2. -x:?负值??
  3. +x:?转换为数值;??
  4. x^y:???
  5. x**y:?次方??
  6. x*y:?乘法??
  7. x/y:除法??
  8. x+y:??
  9. x-y:??
  10. x%y:??
  11. 字符串操作符:??
  12. 只有一个,而且不用写出来,用于实现字符串连接;??
  13. 赋值操作符:??
  14. =??
  15. +=??
  16. -=??
  17. *=??
  18. /=??
  19. %=??
  20. ^=??
  21. **=??
  22. ++??
  23. --??
  24. 需要注意的是,如果某模式为=号,此时使用/=/可能会有语法错误,应以/[=]/替代;??
  25. 布尔值?
  26. awk中,任何非0值或非空字符串都为真,反之就为假??
 
 
  1. ?比较操作符:??
  2. x?<?y???????True?if?x?is?less?than?y.???
  3. x?<=?y??True?if?x?is?less?than?or?equal?to?y.???
  4. x?>?y???????True?if?x?is?greater?than?y.???
  5. x?>=?y??True?if?x?is?greater?than?or?equal?to?y.???
  6. x?==?y??True?if?x?is?equal?to?y.???
  7. x?!=?y??True?if?x?is?not?equal?to?y.???
  8. x?~?y??????True?if?the?string?x?matches?the?regexp?denoted?by?y.???
  9. x?!~?y??True?if?the?string?x?does?not?match?the?regexp?denoted?by?y.???
  10. subscript?in?array????True?if?the?array?array?has?an?element?with?the?subscript?subscript??
  11. ?表达式间的逻辑关系符:??
  12. ?&&??
  13. ||?
  14. 条件表达式:??
  15. selector?if-true-exp:if-false-exp??
  16. ?selector?:条件表达式??
  17. ?if-true-exp:statement??
  18. ?if-false-exp:?statement??
  • 下面我们来重点说说awk的模式使用
 
 
  1. awk的模式:??
  2. awk?[options]?‘parten’?‘print?….’?filename??
  3. parten:??
  4. 1:正则表达式?格式为/regular?expression/??
  5. 2:?表达式??其值非0或者非空字符时满足的条件??例如:$1?~?/user/?或者?$1?==?‘user’??
  6. 用运算符~(匹配)和?~?!(不匹配)??
  7. 例如:?

 
 
  1. 指匹配范围格式为pat1,pat2?(pat代表模式)同sed用法??
  2. ?BEGIN/END?特殊格式???
  3. ???BEGIN?:在awk执行动作之前的处理动作??
  4. ????让用户指定在第一条输入记录被处理之前所发生的动作,通常可在这里设置全局变量??
  5. ?END:在awk?执行动作完成后执行的动作??
  6. ????让用户在最后一条输入记录被读取之后发生的动作??
  7. 例如:?
  8. Awk?–F:’$NF?~/bash/?{print?“username?bash”?;printf?“%-10s?%sn,$1,$NF”}’?/etc?/passwd

?空模式是指 :匹配所有行
由于篇幅限制字数限制不能全部介绍,如有错误,还望多多指正,多多讨论,谢谢。下篇 将继续awk的循环控制语句的使用,

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读