[shell] -- linux下日志文件的指定起始行和指定行数读取
来源:互联网 发布:遭遇网络诈骗怎么报警 编辑:程序博客网 时间:2024/05/16 10:38
摘要: 在项目开发过程中一般需要经常检查日志文件,为了方便读取一段日志而编写的脚本
在项目开发过程中一般需要经常检查日志文件中的错误,在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_PATHfunction 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_LINEfi
说明:
1. 将文件保到系统路径之一的/root/bin中 确保脚本可以在任意目录下直接运行
2. 使用chmod命令赋予文件可执行权限
3. 最后/root/.bashrc 添加一行 例如 alias clg=”sh clg.sh” 给脚本设置一个别名 clg
4. 然后使用source .bahrc 命令使别名生效 这样可以直接用clg 代替 sh clg.sh 使脚本使用起来像一个用户自定义命令一样
阅读全文
1 0
- [shell] -- linux下日志文件的指定起始行和指定行数读取
- shell读取文件的指定行字符串
- shell读取文件的指定行字符串
- shell awk读取文件中的指定行的指定字段
- Python 实例一 统计指定文件的行数或读取指定文件指定行数的内容
- shell统计指定目录、指定模式的文件行数
- python读取指定文件指定行数内容
- python读取指定文件指定行数内容
- 指定行数读取log文件
- python计算文件的行数和读取指定行的内容
- 通过NSInputStream读取大文件的指定起始内容
- linux Shell: 定时清理指定目录下大于指定大小、指定文件名的文件?
- shell脚本 - sed文件读取指定行
- Java按指定行数读取文件
- Java按指定行数读取文件
- Java按指定行数读取文件
- Java按指定行数读取文件 .
- Java按指定行数读取文件
- ffmpeg VS2013 编译调试
- 切换JDK版本时修改JAVA_HOME环境变量不生效
- 何时考虑阻抗匹配
- Stock(买卖股票)
- Redis集群方案理解及实践
- [shell] -- linux下日志文件的指定起始行和指定行数读取
- Android设计模式实战---责任链模式
- Spring Boot 动态数据源(多数据源自动切换)[转载]
- 欢迎使用CSDN-markdown编辑器
- HDFS小文件的合并优化
- Java中的Date和时区转换
- Ubuntu下PX4飞控开发环境搭建
- 之前用的一个多进程python爬虫
- myeclispe调试Fn键