跟老韩学Linux自动化运维(基础篇)_韩艳威 编著_AZW3_MOBI_EPUB_PDF_电子书(无页码)_韩艳威 编著

内容节选

3.4awk与正则表达式 awk是一款优良的文本处理工具,同时也是一个报告生成器,它拥有强大的文本格式化的能力,可以进行正则表达式的匹配、流程控制、数学运算,具备一个完整的语言应具备的多数特性。 awk脚本通常由3部分组成,即BEGIN、END和带模式匹配选项的常见语句块。这3个部分都是可选项,在脚本中可省略任意部分。 3.4.1 awk语法与基本指令 1.awk工作模式 执行awk时,它会反复进行下列4个步骤。 (1)自动从指定的数据文件中读取一个数据行。 (2)自动更新(Update)相关的内建变量(NF、NR、$0等变量)的值。 (3)依次执行程序中所有的Pattern { Actions }指令。 (4)当执行完程序中所有Pattern { Actions }指令时,若数据文件中还有未读取的数据,则重复执行步骤(1)到步骤(3)。 awk默认将处理结果输出至标准输出,如果不指定输入文件,则使用标准输入,awk标准输入选项如表3-6所示。 表3-6 awk标准输入选项 选项说明 -F指定输入字段(列)分隔符 -f使用脚本文件 awk语法格式如表3-7所示。 表3-7 awk语法格式 语法格式说明 BEGIN在读取数据之前处理指令 pattern匹配模式 {commands}处理指令,可能多行 END在读取所有数据结束之后处理指令 最简单的操作,既没有patter,也没有选项,代码如下。1 [root@lamp_0_16 awk]# echo 跟老韩学Python > laohan_python.log 2 [root@lamp_0_16 awk]# awk '{print}' laohan_python.log 3 跟老韩学Python 上述代码中第1行表示将“跟老韩学Python”字符串输入laohan_python.log文件中。 第2行输出laohan_python.log文件中的内容,第3行为匹配输出结果。 2.awk基础语法 awk语法格式说明如下。 ● 格式1:前置指令 | awk [选项] '条件{编辑指令}'。 ● 格式2:awk [选项] '条件{编辑指令}' 文件。 选项表示awk在数据中查找的内容。 编辑指令如果包含多条语句时,可以用分号分隔,处理文本时,若未指定分隔符,则默认将空格、制表符等作为分隔符。print是常见的指令,常用指令选项如下。 ● -F:指定分隔符,可省略(默认分隔符为空格)。 ● -V:调用外部Shell变量。 3.awk内置变量与动作 awk内置变量如表3-8所示。 表3-8 awk内置变量 内置变量说明 $0整行内容 $nn为正整数,代表第n个字段(列)的内容 $1~$n当前行的第1~n个字段 NF当前行的字段个数,从1开始计数 NR当前行的行号,从1开始计数 FNR多文件处理时,每个文件行号单独计数,都从0开始 FS输入字段分隔符 RS指定行分隔符 OFS输出字段分隔符,默认为空格 ORS输出字段分隔符,默认为换行符 FILENAME当前输入的文件名 ARGC指令行参数个数 ARGV指令行参数数组 awk常用动作如表3-9所示。 表3-9 awk常用动作 动作说明 print输出内容(默认值) printf格式化输出内容 awk修饰符如表3-10所示。 表3-10 awk修饰符 修饰符说明 +右对齐 −左对齐 #显示八进制数在前面加0,显示十六进制数在前面加0x awk模式匹配如表3-11所示。 表3-11 awk模式匹配 模式匹配说明 RegExp按正则表达式匹配 关系运算按关系运算匹配 4.print()和printf() awk中同时提供了print()和printf()两种输出的函数。 print()函数的参数可以是变量、数值或者字符串。字符串必须用双引号标注,参数用逗号分隔。如果没有逗号,参数就串联在一起而无法区分。逗号的作用与输出文件的分隔符的作用是一样的,只是后者是空格而已。 printf()函数,其用法和C语言中printf语法相似,可以格式化字符串,输出复杂数据条目时,printf()更加好用,代码更易阅读。 printf()常用格式符如表3-12所示。 表3-12 printf()常用格式符 格式符说明 %s输出字符串 %d输出十进制数 %f输出一个浮点数 %x输出十六进制数 %o输出八进制数 %e输出数字的科学记数法形式 %c输出单个字符的ASCII print()进行输出,默认输出每行内容,用“Enter”键换行。使用printf()(默认没有加任何输出分隔符)进行格式化输出,代码如下。1 [root@lamp_0_16 awk]# cat printf.sh2 #!/bin/bash34 printf "%-10s %-8s %-4s\n" 姓名......

  1. 信息
  2. 内容提要
  3. 前言
  4. 第1章 Shell脚本编程入门
  5. 1.1 熟练掌握Linux指令的重要性
  6. 1.2 Shell的基本概念
  7. 1.3 Shell脚本注释
  8. 1.4 Shell脚本调试
  9. 1.5 掌握Shell编程
  10. 1.6 Shell编程特性
  11. 1.7 Shell脚本运维实战
  12. 1.8 Linux清空文件内容的6种方法
  13. 1.9 Shell编程实用指令
  14. 1.10 Shell编程中的特殊字符
  15. 1.11 本章练习
  16. 1.12 编写Shell脚本经验
  17. 1.13 本章总结
  18. 第2章 Shell变量与字符串
  19. 2.1 Shell基础知识
  20. 2.2 Shell变量与运算符
  21. 2.3 Shell变量高级知识
  22. 2.4 Shell运算符
  23. 2.5 Shell编程之特殊符号
  24. 2.6 Shell编程之字符串常用操作
  25. 2.7 Shell指令替换与数学运算
  26. 2.8 本章练习
  27. 2.9 本章总结
  28. 第3章 Shell正则表达式与文本处理三剑客
  29. 3.1 正则表达式基础
  30. 3.2 grep与正则表达式
  31. 3.3 sed与正则表达式
  32. 3.4 awk与正则表达式
  33. 3.5 awk数组与运算符
  34. 3.6 本章总结
  35. 第4章 Shell编程之文件查找与处理
  36. 4.1 find与正则表达式
  37. 4.2 文本处理指令
  38. 4.3 本章练习
  39. 4.4 本章总结
  40. 第5章 Shell条件测试和循环语句
  41. 5.1 Shell编程之字符串精讲
  42. 5.2 Shell条件测试和表达式
  43. 5.3 Shell流程控制
  44. 5.4 Shell循环
  45. 5.5 循环控制语句
  46. 5.6 本章练习
  47. 5.7 本章总结
  48. 第6章 Shell数组与函数
  49. 6.1 Shell数组的定义和赋值
  50. 6.2 访问和删除数组
  51. 6.3 Shell函数
  52. 6.4 本章练习
  53. 6.5 本章总结
  54. 第7章 Linux自动化运维入门
  55. 7.1 SSH服务基础精讲
  56. 7.2 OpenSSH服务详解
  57. 7.3 SSH自动化运维精讲
  58. 7.4 自动化运维工具之pssh
  59. 7.5 自动化运维工具之rsync
  60. 7.6 定时任务与发送邮件
  61. 7.7 crontab基础知识
  62. 7.8 使用Mutt发送邮件
  63. 7.9 本章练习
  64. 7.10 本章总结