忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT HPC论坛 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
楼主: keymanlu

[文本处理] 找到匹配行并打印其前5行 [复制链接]

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
发表于 2017-03-13 19:27 |显示全部楼层
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. my @aData = ();
  5. my @aPos = map {-$_} reverse (1 .. 6);
  6. while (<DATA>){
  7.         push (@aData, $_);
  8.         next if ($aData[-1] !~ m{\Qat java/net/SocketInputStream.socketRead0\E});
  9.         print @aData[@aPos];
  10.         @aData = ();
  11. }

  12. __DATA__
  13. 3XMTHREADINFO      "[ACTIVE] ExecuteThread: '24' for queue: 'weblogic.kernel.Default (self-tuning)'" J9VMThread:0x00000000C0AD8200, j9thread_t:0x0000010019819F50, java/lang/Threa
  14. d:0x0000000041280628, state:R, prio=5
  15. 3XMJAVALTHREAD            (java/lang/Thread getId:0x37, isDaemon:true)
  16. 3XMTHREADINFO1            (native thread ID:0x1AF0091, native priority:0x5, native policy:UNKNOWN)
  17. 3XMTHREADINFO3           Java callstack:
  18. 4XESTACKTRACE                at java/net/SocketInputStream.socketRead0(Native Method)
  19. 4XESTACKTRACE                at java/net/SocketInputStream.read(SocketInputStream.java:140(Compiled Code))
  20. 4XESTACKTRACE                at oracle/net/ns/Packet.receive(Packet.java:300(Compiled Code))
  21. 4XESTACKTRACE                at oracle/net/ns/DataPacket.receive(DataPacket.java:106(Compiled Code))
  22. 4XESTACKTRACE                at oracle/net/ns/NetInputStream.getNextPacket(NetInputStream.java:315(Compiled Code))
  23. 4XESTACKTRACE                at oracle/net/ns/NetInputStream.read(NetInputStream.java:260(Compiled Code))
  24. 4XESTACKTRACE                at oracle/net/ns/NetInputStream.read(NetInputStream.java:185(Compiled Code))
  25. 4XESTACKTRACE                at oracle/net/ns/NetInputStream.read(NetInputStream.java:102(Compiled Code))
  26. 4XESTACKTRACE                at oracle/jdbc/driver/T4CSocketInputStreamWrapper.readNextPacket(T4CSocketInputStreamWrapper.java:124(Compiled Code))
  27. 4XESTACKTRACE                at oracle/jdbc/driver/T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapper.java:80(Compiled Code))
  28. 4XESTACKTRACE                at oracle/jdbc/driver/T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1137(Compiled Code))
  29. 4XESTACKTRACE                at oracle/jdbc/driver/T4CTTIfun.receive(T4CTTIfun.java:290(Compiled Code))
  30. 4XESTACKTRACE                at oracle/jdbc/driver/T4CTTIfun.doRPC(T4CTTIfun.java:192(Compiled Code))
  31. 4XESTACKTRACE                at oracle/jdbc/driver/T4C8Oall.doOALL(T4C8Oall.java:531(Compiled Code))
  32. 4XESTACKTRACE                at oracle/jdbc/driver/T4CPreparedStatement.doOall8(T4CPreparedStatement.java:207(Compiled Code))
  33. 4XESTACKTRACE                at oracle/jdbc/driver/T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:1044(Compiled Code))
  34. 4XESTACKTRACE                at oracle/jdbc/driver/OracleStatement.executeMaybeDescribe(OracleStatement.java:1199(Compiled Code))
  35. 4XESTACKTRACE                at oracle/jdbc/driver/OracleStatement.doExecuteWithTimeout(OracleStatement.java:1289(Compiled Code))
  36. 4XESTACKTRACE                at oracle/jdbc/driver/OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3593(Compiled Code))
  37. 4XESTACKTRACE                at oracle/jdbc/driver/OraclePreparedStatement.execute(OraclePreparedStatement.java:3694(Compiled Code))
  38. 4XESTACKTRACE                at oracle/jdbc/driver/OraclePreparedStatementWrapper.execute(OraclePreparedStatementWrapper.java:1378(Compiled Code))
  39. 4XESTACKTRACE                at weblogic/jdbc/common/internal/ConnectionEnv.testInternal(ConnectionEnv.java:979(Compiled Code))
  40. 4XESTACKTRACE                at weblogic/jdbc/common/internal/ConnectionEnv.test(ConnectionEnv.java:917(Compiled Code))
  41. 4XESTACKTRACE                at weblogic/jdbc/common/internal/ConnectionEnv.test(ConnectionEnv.java:613(Compiled Code))
  42. 4XESTACKTRACE                at weblogic/common/resourcepool/ResourcePoolImpl.testResource(ResourcePoolImpl.java:2271(Compiled Code))
  43. 4XESTACKTRACE                at weblogic/common/resourcepool/ResourcePoolImpl.checkResource(ResourcePoolImpl.java:1741(Compiled Code))
  44. 4XESTACKTRACE                at weblogic/common/resourcepool/ResourcePoolImpl.checkAndReturnResource(ResourcePoolImpl.java:1651(Compiled Code))
  45. 4XESTACKTRACE                at weblogic/common/resourcepool/ResourcePoolImpl.checkAndReturnResource(ResourcePoolImpl.java:1640(Compiled Code))
  46. 4XESTACKTRACE                at weblogic/common/resourcepool/ResourcePoolImpl.testUnusedResources(ResourcePoolImpl.java:2094(Compiled Code))
  47. 4XESTACKTRACE                at weblogic/common/resourcepool/ResourcePoolImpl.access$1600(ResourcePoolImpl.java:41(Compiled Code))
  48. 4XESTACKTRACE                at weblogic/common/resourcepool/ResourcePoolImpl$ResourcePoolMaintanenceTask.timerExpired(ResourcePoolImpl.java:2775(Compiled Code))
  49. 4XESTACKTRACE                at weblogic/timers/internal/TimerImpl.run(TimerImpl.java:284(Compiled Code))
  50. 4XESTACKTRACE                at weblogic/work/SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:545(Compiled Code))
  51. 4XESTACKTRACE                at weblogic/work/ExecuteThread.execute(ExecuteThread.java:256(Compiled Code))
  52. 4XESTACKTRACE                at weblogic/work/ExecuteThread.run(ExecuteThread.java:221)
  53. 3XMTHREADINFO3           Native callstack:
  54. 4XENATIVESTACK               JCL_Recv+0x24 (0x09000000009ED424 [libjava.so+0x9424])
  55. 4XENATIVESTACK               NET_Read+0x7c (0x09000000019A4508 [libnet.so+0x6508])
  56. 4XENATIVESTACK               Java_java_net_SocketInputStream_socketRead0+0x294 (0x09000000019B2AA8 [libnet.so+0x14aa8])
  57. 4XENATIVESTACK               (0x0000010027568CBC)
  58. 4XENATIVESTACK               (0x09000000013D36D0 [libj9vm24.so+0xe6d0])
  59. 4XENATIVESTACK               (0x0900000001469FAC [libj9prt24.so+0x1fac])
  60. 4XENATIVESTACK               (0x09000000013D35F0 [libj9vm24.so+0xe5f0])
  61. 4XENATIVESTACK               (0x0900000001453C70 [libj9thr24.so+0x1c70])
  62. 4XENATIVESTACK               _pthread_body+0xf0 (0x09000000005F8D34 [libpthreads.a+0x3d34])
  63. NULL
  64. 3XMTHREADINFO      "[ACTIVE] ExecuteThread: '149' for queue: 'weblogic.kernel.Default (self-tuning)'" J9VMThread:0x00000000C0B5F100, j9thread_t:0x000001001BFA48F0, java/lang/Thre
  65. ad:0x000000004133ED40, state:CW, prio=5
  66. 3XMJAVALTHREAD            (java/lang/Thread getId:0xB4, isDaemon:true)
  67. 3XMTHREADINFO1            (native thread ID:0x25600FD, native priority:0x5, native policy:UNKNOWN)
  68. 3XMTHREADINFO3           Java callstack:
  69. 4XESTACKTRACE                at java/lang/Object.wait(Native Method)
  70. 4XESTACKTRACE                at java/lang/Object.wait(Object.java:167(Compiled Code))
  71. 4XESTACKTRACE                at weblogic/work/ExecuteThread.waitForRequest(ExecuteThread.java:205(Compiled Code))
  72. 4XESTACKTRACE                at weblogic/work/ExecuteThread.run(ExecuteThread.java:226)
  73. 3XMTHREADINFO3           Native callstack:
  74. 4XENATIVESTACK               _event_wait+0x2b8 (0x090000000060BD3C [libpthreads.a+0x16d3c])
  75. 4XENATIVESTACK               _cond_wait_local+0x4e4 (0x0900000000619A48 [libpthreads.a+0x24a48])
  76. 4XENATIVESTACK               _cond_wait+0xbc (0x090000000061A020 [libpthreads.a+0x25020])
  77. 4XENATIVESTACK               pthread_cond_wait+0x1a8 (0x090000000061AC8C [libpthreads.a+0x25c8c])
  78. 4XENATIVESTACK               (0x0900000001456170 [libj9thr24.so+0x4170])
  79. 4XENATIVESTACK               (0x0900000001455F34 [libj9thr24.so+0x3f34])
  80. 4XENATIVESTACK               (0x0900000001455FA0 [libj9thr24.so+0x3fa0])
  81. 4XENATIVESTACK               (0x09000000016D0AB4 [libjclscar_24.so+0x27ab4])
  82. 4XENATIVESTACK               (0x09000000016D1700 [libjclscar_24.so+0x28700])
  83. 4XENATIVESTACK               (0x09000000013D36D0 [libj9vm24.so+0xe6d0])
  84. 4XENATIVESTACK               (0x0900000001469FAC [libj9prt24.so+0x1fac])
  85. 4XENATIVESTACK               (0x09000000013D35F0 [libj9vm24.so+0xe5f0])
  86. 4XENATIVESTACK               (0x0900000001453C70 [libj9thr24.so+0x1c70])
  87. 4XENATIVESTACK               _pthread_body+0xf0 (0x09000000005F8D34 [libpthreads.a+0x3d34])
  88. NULL
复制代码

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-09-07 06:20:00程序设计版块每日发帖之星
日期:2015-09-07 06:20:00
发表于 2017-03-13 20:10 |显示全部楼层
  1. [root@CentOS_6 shell]# awk '{if($3~/java\/net\/SocketInputStream\.socketRead0\(Native/){for(i=5;i>=1;i--){print(a[NR-i])}print $0}a[NR]=$0}' c.txt         
  2. 3XMTHREADINFO      "[ACTIVE] ExecuteThread: '24' for queue: 'weblogic.kernel.Default (self-tuning)'" J9VMThread:0x00000000C0AD8200, j9thread_t:0x0000010019819F50, java/lang/Threa
  3. d:0x0000000041280628, state:R, prio=5
  4. 3XMJAVALTHREAD            (java/lang/Thread getId:0x37, isDaemon:true)
  5. 3XMTHREADINFO1            (native thread ID:0x1AF0091, native priority:0x5, native policy:UNKNOWN)
  6. 3XMTHREADINFO3           Java callstack:
  7. 4XESTACKTRACE                at java/net/SocketInputStream.socketRead0(Native Method)
复制代码

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-09-07 06:20:00程序设计版块每日发帖之星
日期:2015-09-07 06:20:00
发表于 2017-03-13 20:10 |显示全部楼层
  1. [root@CentOS_6 shell]# awk '{if($3~/java\/net\/SocketInputStream\.socketRead0\(Native/){for(i=5;i>=1;i--){print(a[NR-i])}print $0}a[NR]=$0}' c.txt         
  2. 3XMTHREADINFO      "[ACTIVE] ExecuteThread: '24' for queue: 'weblogic.kernel.Default (self-tuning)'" J9VMThread:0x00000000C0AD8200, j9thread_t:0x0000010019819F50, java/lang/Threa
  3. d:0x0000000041280628, state:R, prio=5
  4. 3XMJAVALTHREAD            (java/lang/Thread getId:0x37, isDaemon:true)
  5. 3XMTHREADINFO1            (native thread ID:0x1AF0091, native priority:0x5, native policy:UNKNOWN)
  6. 3XMTHREADINFO3           Java callstack:
  7. 4XESTACKTRACE                at java/net/SocketInputStream.socketRead0(Native Method)
复制代码

论坛徽章:
120
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07巳蛇
日期:2014-05-09 16:43:18巨蟹座
日期:2014-10-23 17:48:38子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59
发表于 2017-03-13 23:26 |显示全部楼层
回复 1# keymanlu

$ awk -vB=5 '{a[NR%B]=$0}/java\/net\/SocketInputStream.socketRead0/{s=$0;"";for(n=1;n<B;++n)s=a[(NR-n)%B]"\n"s;print s}' FILE
d:0x0000000041280628, state:R, prio=5
3XMJAVALTHREAD            (java/lang/Thread getId:0x37, isDaemon:true)
3XMTHREADINFO1            (native thread ID:0x1AF0091, native priority:0x5, native policy:UNKNOWN)
3XMTHREADINFO3           Java callstack:
4XESTACKTRACE                at java/net/SocketInputStream.socketRead0(Native Method)

论坛徽章:
0
发表于 2017-03-13 23:44 |显示全部楼层

谢谢分享,你的方法比较容易参考,把循环里面的i改一下我就可以控制打印前几行了。
能否再指点下,a[NR]=$0是不是表示把一整行赋值给当前行号的数组的意思?

论坛徽章:
0
发表于 2017-03-13 23:54 |显示全部楼层
回复 14# jason680

谢谢您分享,我测试了一下,也是在Linux下是可以的,AIX的awk就不能处理了。

论坛徽章:
0
发表于 2017-03-14 00:02 |显示全部楼层
回复 10# moperyblue

我在AIX测试,他会报错awk: Cannot read the value of  b. It is an array name.

The input line number is 35110. The file is javacore.20170301.095931.5964094.0006.txt.
The source line number is 1.

而在Linux测试结果就可以执行。
能不能稍微讲解一下您的命令的过程?我看不理解这个实现方式。

论坛徽章:
120
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07巳蛇
日期:2014-05-09 16:43:18巨蟹座
日期:2014-10-23 17:48:38子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59
发表于 2017-03-14 00:19 |显示全部楼层
回复 16# keymanlu

$ perl -lane 'BEGIN{$B=5}{push @a,$_;if(@a>$B){shift@a};if(m/java\/net\/SocketInputStream.socketRead0/){print join("\n",@a)}}' FILE
d:0x0000000041280628, state:R, prio=5
3XMJAVALTHREAD            (java/lang/Thread getId:0x37, isDaemon:true)
3XMTHREADINFO1            (native thread ID:0x1AF0091, native priority:0x5, native policy:UNKNOWN)
3XMTHREADINFO3           Java callstack:
4XESTACKTRACE                at java/net/SocketInputStream.socketRead0(Native Method)

论坛徽章:
2
综合交流区版块每日发帖之星
日期:2016-07-06 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:00
发表于 2017-03-14 10:01 |显示全部楼层
好帖子顶一顶!感谢楼主

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
发表于 2017-03-14 11:10 |显示全部楼层
跟顶了,学习了先进的求解思路。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP