目标:
查看日志文件中,所有空指针异常发生的位置,及前后10行,
前10行是为了看到请求的详细信息(接口 ,参数等),
后10行是为了查看异常发生的代码行号,定位代码bug.
命令:
grep -rnw "java.lang.NullPointerException" house_error.log |cut -d ':' -f 1 |xargs -n1 -i expr {} + 10 |xargs -i awk '{if(NR>={}-16 && NR<={})print NR":"$0;if(NR=={}) print "\n\n" }' house_error.log
命令解释:
命令执行结果:
awk 中:
$0:表示整行;
$1:表示以分隔符分割之后的第一个字段(域);
$2:表示以分隔符分割之后的第二个字段(域);
分隔符:默认是空格,换行,\Tab
awk的内置常量
在awk中有很多的系统变量,这些系统变量在我们编写awk脚本的时候会经常使用到,我现在将经常使用到的系统变量列举出来,并做简要说明。
$0 | 当前记录内容 | awk '{print $0}' |
$1~$n | 分别保存着当前记录的字段1到字段n的内容 | awk '{print $1, $2, $3}' |
FS | 字段的分隔符,默认是空格或Tab | awk 'BEGIN{FS=":"}{print $1,$3,$6}' /etc/passwd |
NF | 记录当前记录中的字段个数 | awk '{print $0} END{printf("Total Field(s):%d\n", NF)}' 201509.log |
NR | 已经读出的行数,从1开始计数;对于多个文件的情况下,该值会持续累加 | awk '{print NR}' 201508.log 201509.log |
FNR | 对于当前处理的文件来说,已经读出的行数;对于多个文件的情况下,该值是各个文件独自对应的行号 | awk '{print FNR}' 201508.log 201509.log |
RS | 输入的记录分隔符, 默认为换行符 | awk 'BEGIN{RS=" "}{print FNR}' 201508.log |
OFS | 输出字段分隔符, 默认也是空格 | awk 'BEGIN{OFS="\t"}{print $1, $2, $3}' 201509.log |
ORS | 输出的记录分隔符,默认为换行符 | 一般用的很少,此处不举例说明了 |
FILENAME | 当前输入文件的名字 | awk '{print FILENAME}' 201509.log |
注意事项:
expr 算术运算中,运算符两边必须有一个空格
参考:
https://www.tuicool.com/articles/2mqmYbe
相关推荐
在日志查看方面,FinalShell提供了实时监控、搜索、过滤以及导出等功能,帮助用户迅速定位和分析日志中的关键信息。 首先,FinalShell支持实时查看日志。用户可以连接到远程服务器,然后打开指定的日志文件,软件会...
在实际开发中,我们通常会将shell命令的执行结果或错误信息记录到日志,以便于调试和分析。可以使用Android的日志系统(如`Log.d()`, `Log.e()`等)将这些信息输出到控制台或者保存到文件。 总的来说,通过JNI调用C...
Shell 分析日志文件高效命令详解 shell 分析日志文件是一种常见的操作系统日志记录方式,通过分析日志文件,可以获取服务器的访问情况、用户行为、系统性能等信息。本文将详细介绍 Shell 分析日志文件的高效命令...
通常,我们可以编写一个批处理文件,其中包含`adb logcat -v long > log.txt`这样的命令,这将把日志输出到一个文本文件中,方便查看和分析。 接着,`logcat_delete_all.bat`可能是一个清除`Logcat`中所有日志的...
2. 编写C/C++代码,实现执行shell命令的功能。 3. 使用`System.loadLibrary()`加载本地库。 4. 在Java代码中调用本地方法,传递shell命令。 5. 可以使用`logSystem.zip`中的工具或代码记录执行过程和结果,以便于...
《Linux UNIX Shell命令大全》是一本深度探讨操作系统交互界面——Shell编程及命令使用的权威指南。本书分为五个部分,全面覆盖了从基础到高级的各类Shell编程技术和UNIX命令,旨在帮助读者提升在Linux环境中的工作...
2. **日志文件的读取**:脚本会使用`cat`、`tail`或`grep`命令来读取和处理日志文件。例如,`tail -f`可以持续监控日志文件的尾部,一旦有新内容,就立即显示。 3. **错误关键字的查找**:使用`grep`命令,结合配置...
本篇文章将详细介绍如何利用Linux shell命令来分析Nginx的日志文件。 首先,了解Nginx的日志格式至关重要。默认情况下,Nginx的主要访问日志文件通常位于`/var/log/nginx/access.log`,采用combined日志格式,内容...
1、在Windows下的用户要使用shell命令符的话请先安装cygwin,安装方法自行Google(搜技术问题请使用google,百度搜不到活该) 2、下面粗略介绍下SEO日志分析常用的命令符用法,需要详细了解每个命令符请使用Google。...
test_format.sh可能是这样的一个脚本,它可能包含了上述命令的组合使用,以满足特定的日志处理逻辑。 在实际工作中,结合这些命令和脚本,我们可以高效地处理和分析大量日志数据,提高工作效率。学习和掌握这些...
学习Shell编程,最好的方法是动手实践,例如编写自动备份脚本、日志分析脚本等,将理论知识应用到实际问题解决中。 通过这个资料包,你将能够深入学习和理解Linux Shell编程的核心概念,从而提升你在系统管理和...
在Linux系统中,可以使用`top`或`vmstat`命令来实时查看系统的CPU利用率。`top`命令提供了一个交互式的界面,展示当前系统中各个进程的CPU和内存使用情况;而`vmstat`则输出系统整体的统计信息,包括进程、内存、...
- **编译配置**:包括构建目标、日志文件等,确保构建过程中产生的信息能够被记录下来供后续分析使用。 #### 三、注意事项 - **环境一致性**:确保Jenkins服务器上的开发环境与开发者的本地环境保持一致,避免因...
最后,书中简要涉及了一些Unix系统的管理问题,如用户和组管理、权限设置、进程调度、日志分析等。这部分内容虽然不是Shell编程的主体,但对于理解Unix环境下的系统运维至关重要。 总的来说,《Shell编程与Unix命令...
在Linux系统中,Shell脚本配合各种命令工具可以实现高效且灵活的日志分析。本文将详细介绍如何利用Shell和Linux命令来实现日志分析,特别是针对访问日志的统计。 1. 列出当天访问次数最多的IP: 使用`cut`命令以...
2. **数据处理**:对于批量处理文件或者进行数据清洗时,也可以使用封装好的Shell命令来提高效率。 3. **资源管理**:在云平台或者服务器集群管理中,通过Python调用Shell命令可以帮助更高效地管理资源。 #### 五、...
在Linux系统中,shell脚本是一种强大的工具,可以自动化执行...结合日志文件,我们可以方便地查看历史数据,分析网络稳定性,及时发现并解决网络问题。在实际应用中,还可以根据具体需求进一步定制脚本,提高运维效率。
- **awk '{print $4}' MqqValentineDay2010UserAccessLog.log.2010-02-25**: 使用`awk`命令从日志文件中提取第四列数据,常用于数据分析或筛选特定字段。 #### 5. 进程与网络监控 - **sudo /usr/sbin/tcpdump -i ...
3. 日志分析:解析日志文件,提取关键信息。 4. 网络自动化:批量配置网络设备,如DNS设置、IP地址分配等。 5. 安装部署:自动化软件安装、配置和更新过程。 通过深入学习和实践这些知识点,你可以熟练掌握Shell...