awk 是一个处理文本的编程语言工具,能用简短的程序处理标准输入或文件、数据排序、计算以及生成报表等等。
在 Linux 系统下默认 awk 是 gawk,它是 awk 的 GNU 版本。可以通过命令查看应用的版本:ls -l /bin/awk
命令格式
awk 选项 'BEGIN{}{动作}END{}' file
其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。花括号用于根据特定的模式对一系列指令进行分组。
sed 是 Linux 中提供的一个外部命令,是一个行(hang)编辑器,也叫流编辑器,非交互式的对文件内容进行增删改查的操作,只能在命令行输入编辑命令、指定文件名,然后在屏幕查看输出。
它和文本编辑器又本质的区别了,单从名字上来看,行编辑器和文本编辑器,前者将文件中的行作为编辑对象,后者将文件作为编辑对象。
三剑客是:grep、sed、awk,简直就是我的弱点,一直没机会深入,仅仅会简单的使用,看完本剑客系列即可在文本处理上上升一个档次。掌握的三剑客知识也越来越多。
grep 是一种文本搜索工具,用于查找给定文本中符合条件的字符串所在的行,并打印出来,可以配合上节中的正则和其他多种命令,使用十分灵活。
正则表达式在每种编程或者脚本语言中都会有,功能就是在你做不到精确匹配时,尽可能的匹配到符合预期的字符串,可以简化脚本语言逻辑和流程。比如做监控脚本时,要取内存值,磁盘使用率,cpu负载等。
我还没有接触 shell 函数的时候看到过一些类似编程语言的 shell 脚本,当时就感觉什么时候我也能写出这样的东西来就牛*了,接触过之后才知道,这个叫函数,很多数学不好的一听到函数也觉得算了,不学了,听着都难,按照人为的思路来理解一下就很简单了。
在实际工作中,会遇到某项任务重复执行,或者需要重复执行的命令中,只有个别参数不同。比如,测试主机连通性的ping命令,创建批量用户等操作。
这些任务的共同点就是简单且重复,循环语句就可以帮助解决工作中这种难题,提高工作效率,节省大量代码,同时也会相应想节省内存。
作为一个运维在编写自动化脚本时,希望在脚本头部添加自己的作者信息,又或者版权信息,但是每写一个脚本就添加一遍注释,就显得自己很呆,本身工作就是做的自动化,结果还是劳心劳肺。
在条件测试一文中,通过逻辑测试已经可以通过&&
和||
完成简单的条件判断,并执行相应的操作,但是当需要判断的条件过多时,就会显得逻辑测试的方法的代码复杂,不好理解。而使用if
条件语句,就可以让代码结构清晰易懂。
Shell脚本就是命令的集合,这也是脚本最简单易懂的理解。脚本的运行,无非就是想让命令在什么条件下怎么样的执行。如果仅仅是根据命令的集合来完成脚本自动化,就会出现很多的意外的脚本中断。要想让脚本有自己的”思想”。如:在创建目录之前,要知道有没有同名目录,如果同名的情况下,肯定会报错的。
对于运维工作来说,要保证服务7*24的正常运行,但是每个公司都会去分早晚班的执行吗,并不是的。那对于晚上没有运维在的场景下,要去进行业务的维护,应该怎么办,只能加班吗。答案一定是不是的。
在各种Shell环境中都会用到变量的概念。Shell变量用来存放系统和用户需要使用的特定参数值,通过使用变量,Shell程序能够提供更加灵活的功能,适应性强。
常见的Shell变量的类型包括 系统变量,位置变量,预定义变量,自定义变量
下面围绕这四种变量类型来举例
对Linux有过学习或者了解的都应该知道,Linux系统是基于 Shell 环境来执行的,作为运维也可以使用 Shell 脚本进行自动化的管理,使运维的工作更加的简化,减轻工作量。