文档章节

Linux服务器配置和管理:Shell编程查找关键字个数-查找相邻行数

realsa
 realsa
发布于 2016/10/09 11:31
字数 388
阅读 43
收藏 0

1 假设有一个log文件http.txt,每行包含http返回码,找到返回码200的个数。

首先考虑每行最多出现一个200的情况

$ cat http.txt 
return 100
return 100
return 200
return 100
return 100
return 100
return 100	200
return 100 300 400

# 直接用grep就可以查出来
$ grep 200 http.txt -c #统计行数即可
2

如果每行可能多个200呢?

$ grep '\<200\>' http.txt
return 200
return 100	200	200

grep无能为力了,我们应该编写shell脚本计算

$ cat ct200.sh 
#!/bin/bash
count=0
for i in `cat http.txt` # for是以 任何空白字符 作为分隔符
do
	# 也可写成 "$i" = "200"
		if [ $i = 200 ];then
				let count+=1
		fi
done
echo $count

运行如下

$ bash ct200.sh
3

2 文本中有多行数据,每一行可能有keyword,找出包含keyword的连续两行行号

假设内容如下

fsj@ubuntu:~/tmp$ cat meitu.txt 
abc
66 kw
kw 4
d x
gdas
dsafd
ddd34
qq2

dtttt
kw3 kw kw
666666666666

kw
kw
theend

grep可以查到包含关键字kw的行

fsj@ubuntu:~/tmp$ grep kw meitu.txt -n
2:66 kw
3:kw 4
11:kw3 kw kw
14:kw
15:kw

如何查找连续两行行号? 同样要编写脚本ctrow.sh,判断上一个kw所在行和当前kw所在行是否相差1

#!/bin/bash
pre=-100 # 上一个行号
for i in `grep kw meitu.txt -n | awk -F: '{print $1}'`
do
	if [ $((pre+1)) -eq $i ]; then
			echo $i
	fi
	pre=$i
done

运行下:

fsj@ubuntu:~/tmp$ bash ctrow.sh 
3
15

References

  • 王军. linux系统命令及shell脚本实践指南

© 著作权归作者所有

realsa

realsa

粉丝 33
博文 84
码字总数 107087
作品 0
广州
程序员
私信 提问
从0到1——Linux服务器配置与管理

Linux服务器配置和管理:虚拟机安装CentOS6.7 Linux服务器配置和管理:一般管理 Linux服务器配置和管理:Shell编程查找关键字个数-查找相邻行数

realsa
2016/03/18
49
0
5- 快速上手Linux玩转典型应用- Linux常用命令

6- Linux常用命令 软件操作命令 服务器硬件资源和磁盘操作 最近一分钟 & 五分钟 & 十五分钟。健康指标。 变为1已经是满负载。0.6,0.7标准。 fdisk 格式化磁盘。 文件和文件夹操作命令 Linux全...

天涯明月笙
2018/06/26
0
0
使用 shell 脚本对 Linux 系统和进程资源进行监控

使用 Shell 对进程资源进行监控 检查进程是否存在 在对进程进行监控时,我们一般需要得到该进程的 ID,进程 ID 是进程的唯一标识,但是有时可能在服务器上不同用户下运行着多个相同进程名的进...

Jay_Wei
2014/04/16
90
1
Java开发人员必备Linux命令

管道符“|”将两个命令隔开,左边命令的输出作为右边命令的输入。连续使用管道意味着第一个命令的输出会作为 第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推 1 文件...

JavaEdge
02/19
0
0
linux shell编程-逐行处理文本文件

  前言      在Linux shell编程中,我们经常需要以行为处理单位进行数据处理。   使用while read处理   read命令接收标准输入,或其他文件描述符的输入,得到输入后,read命令将数...

linux运维菜
2018/08/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Mybatis Plus删除

/** @author beth @data 2019-10-17 00:30 */ @RunWith(SpringRunner.class) @SpringBootTest public class DeleteTest { @Autowired private UserInfoMapper userInfoMapper; /** 根据id删除......

一个yuanbeth
今天
4
0
总结

一、设计模式 简单工厂:一个简单而且比较杂的工厂,可以创建任何对象给你 复杂工厂:先创建一种基础类型的工厂接口,然后各自集成实现这个接口,但是每个工厂都是这个基础类的扩展分类,spr...

BobwithB
今天
5
0
java内存模型

前言 Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模...

ls_cherish
今天
4
0
友元函数强制转换

友元函数强制转换 p522

天王盖地虎626
昨天
5
0
js中实现页面跳转(返回前一页、后一页)

本文转载于:专业的前端网站➸js中实现页面跳转(返回前一页、后一页) 一:JS 重载页面,本地刷新,返回上一页 复制代码代码如下: <a href="javascript:history.go(-1)">返回上一页</a> <a h...

前端老手
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部