[shell] -- linux下日志文件的指定起始行和指定行数读取
2017-08-25 14:41
477 查看
摘要: 在项目开发过程中一般需要经常检查日志文件,为了方便读取一段日志而编写的脚本
在项目开发过程中一般需要经常检查日志文件中的错误,在grep -n 锁定到某一行的错误时我们通常要查看该行日志的上下文来分析错误。
而这个时候一般使用cat xx.log |head -n 1000|tail -n100 这样的命令来查看日志文件901 到 1000行的内容
但是这条命令太长 频繁的输入和计算行数非常的繁琐,所以写了一个脚本来代替
使用 范例
脚本内容如下
说明:
1. 将文件保到系统路径之一的/root/bin中 确保脚本可以在任意目录下直接运行
2. 使用chmod命令赋予文件可执行权限
3. 最后/root/.bashrc 添加一行 例如 alias clg=”sh clg.sh” 给脚本设置一个别名 clg
4. 然后使用source .bahrc 命令使别名生效 这样可以直接用clg 代替 sh clg.sh 使脚本使用起来像一个用户自定义命令一样
在项目开发过程中一般需要经常检查日志文件中的错误,在grep -n 锁定到某一行的错误时我们通常要查看该行日志的上下文来分析错误。
而这个时候一般使用cat xx.log |head -n 1000|tail -n100 这样的命令来查看日志文件901 到 1000行的内容
但是这条命令太长 频繁的输入和计算行数非常的繁琐,所以写了一个脚本来代替
使用 范例
#注意:读取的目标文件必须在当前工作目录下 #读取xx.log 2000 到 2299行的内容 sh clg.sh xx.log 2000 300 #两个参数时 默认从2000 开始读取200行 sh clg.sh xx.log 2000
脚本内容如下
#!/bin/bash #FILE_PATH 为当前日志的当前文件目录 FILE_PATH=$PWD"/"$1 #echo $FILE_PATH function init_get_read_line(){ if [ -f $FILE_PATH ];then #获得当前文件的总行数 TOTAL_LINE=$(cat -n $FILE_PATH | wc -l) if [ $# -eq 2 ];then READ_LINE=200 return 0 elif [ $# -eq 3 ];then let "START_LINE=$2+$3" READ_LINE=$3 return 0 else echo "clg: $@ : ERRO PARAM " return 1 fi else echo "clg: $FILE_PATH : No such file or dictory " return 2 fi } #调用函数计算文件的开始行和读取行 init_get_read_line $@ if [ $? -gt 0 ];then exit 1 #如果函数返回的错误代码则退出当前脚本 else let "START_LINE=$2+$READ_LINE" #echo $START_LINE if [ $TOTAL_LINE -lt $START_LINE ];then START_LINE=$TOTAL_LINE#如果总行数小于起始行 则起始行为总行数 保证能读到文件的末尾行 let "READ_LINE=$START_LINE-$2+1" else let "START_LINE=START_LINE-1" fi #最后显示日志内容 cat -n $FILE_PATH | head -n $START_LINE | tail -n $READ_LINE fi
说明:
1. 将文件保到系统路径之一的/root/bin中 确保脚本可以在任意目录下直接运行
2. 使用chmod命令赋予文件可执行权限
3. 最后/root/.bashrc 添加一行 例如 alias clg=”sh clg.sh” 给脚本设置一个别名 clg
4. 然后使用source .bahrc 命令使别名生效 这样可以直接用clg 代替 sh clg.sh 使脚本使用起来像一个用户自定义命令一样
相关文章推荐
- Linux下统计文件行数 语法:wc [选项] 文件… 说明:该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所有 指定文件的总统计数。字是由空格字符
- Linux下将数据文件的指定域读取到shell脚本中
- 在linux下读取日志文件,转义符的处理方式
- 每次读取指定目录、指定数量的文件shell脚本
- 自动删除指定时间内的日志和文件shell脚本
- Linux下shell读取文件内容报错
- linux执行shell文件时遇到“指定文件不存在或未找到”
- (4)(★)Linux 部署日志读取文件 jar包
- Linux下Shell命令的输出信息同时显示在屏幕和保存到日志文件中
- linux下shell统计文件目录下所有代码行数
- Java按指定行数读取文件
- 使用RMAN和控制文件备份删除归档日志的SHELL脚本--RED HAT 5 LINUX 64
- Shell根据给定路径读取其中的文件并输出到指定的路径
- linux下保留文件系统下剩余指定数目文件的shell脚本
- Linux中的Shell脚本逐行读取文件的4种方法
- 执行系统命令并且将输出写到指定日志文件的shell脚本(2)
- Shell提取日志文件指定关键词之间的段落,且包含指定内容
- Linux 查看文件中指定行数的内容
- 读取WEB-INF下的日志文件并添加到集合(windows和linux环境通用)
- shell 脚本---每隔几个小时查看日志文件中包含某些字符串的行数