今天我们继续来学习每天一个命令,今天我们继续学习章节内容:查找类命令(SEARCH),这章里将包括我们运维常用的三剑客内容,今天学习的是什么命令呢,那就是awk(文本和数据进行处理,也可以理解为一种编程语言)。它能使用正则表达式等其他过滤条件搜索文本,并把匹配的内容打印出来。
awk --help
-f 从文件或脚本中读取awk命令
-F 指定以 fs 作为输入行的分隔符,fs可以是字符串、正则表达式等
-v 在执行处理过程之前,设置一个变量值,并可以给其设备初始值为特定值
测试学习开始
1.行数匹配查询
准备好我们要使用的一个文件,里面编写相关帅气的内容!VV
cat testawk1.txt
(1)只显示第一段的值
awk '{print $1}' testawk1.txt
我们看到了,执行的结果显示出来我们初始定义的文件中的第一列:序号列。
(2)显示第二段
awk '{print $2}' testawk1.txt
对比全文件查看,是不是这时候显示了第二列的内容。
这里大家发现了一个现象没有,程序命令自动识别的中间件的空格符,区分出了第二段的内容。
好,以此类推,我们继续
(3)显示第四段
awk '{print $4}' testawk1.txt
我们又看到了另外一个现象,当匹配到此列内没有内容的时候,匹配出的结果会已空白内容显示。而匹配到最后一列内容和符号连在一起的时候,会把所有内容匹配出来并显示。
(4)同时匹配第一列和第二列
awk '{print $1,$2}' testawk1.txt
(5)实际应用:匹配linux服务器上的应用进程ID
ps -ef |grep mongo |awk '{print $2}'
在实际工作中,我们时长会进行查找某进程并进行处理,这时我们就可以使用类似如上命令进行匹配出对应ID,然后直接对进程进行操作即可。
还记得我们在blog中处理僵尸进程的语句吗?
ps aux |grep -w Z |grep -v grep |awk '{print $2}'
我在自己的服务器上执行了下,发现没有结果,证明服务器上没有僵尸进程的,哈哈!!!!
如果没有印象,或者想学习的,可以飞机去:定期清理僵尸进程(临时解决方法)