免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1937 | 回复: 7

[文本处理] 请问如何根据跨行条件截取文本信息?谢谢! [复制链接]

论坛徽章:
0
发表于 2012-08-02 16:28 |显示全部楼层
请问如何从文本信息获取满足 ptempdb_pages >= 10 的 spid?
例如,如下文本信息中,满足要求的是 spid 3 (ptempdb_pages = 10 )和spid 4 (ptempdb_pages = 20 )。


********  Active PSS Structures  ********
spid: 1, kpid: 1361641792, pss: 0x1002dc78e48, proc: 0x10034c22ea8
pmemusage: 3, ptempdb_pages: 3
  User: NMSuser, Command: 0 AWAITING COMMAND
  Status: (0x00010000 (P_USERPROC))
*****************************************
spid: 2, kpid: 327685, pss: 0x1002dc8e888, proc: 0x10034bb6050
pmemusage: 0, ptempdb_pages: 0
  Command: 0 DEADLOCK TUNE
  Status: (0x00000200 (P_SYSTEMPROC))
*****************************************
spid: 3, kpid: 393222, pss: 0x1002dca42c8, proc: 0x10034bb65d8
pmemusage: 0, ptempdb_pages: 10
  Command: 0 ASTC HANDLER
  Status: (0x00000200 (P_SYSTEMPROC))
*****************************************
spid: 4, kpid: 458759, pss: 0x1002dcb9d08, proc: 0x10034bb6b60
pmemusage: 0, ptempdb_pages: 20
  Command: 0 ASTC HANDLER
  Status: (0x00000200 (P_SYSTEMPROC))
*****************************************
spid: 5, kpid: 524296, pss: 0x1002dccf748, proc: 0x10034bb70e8
pmemusage: 0, ptempdb_pages: 0
  Command: 0 ASTC HANDLER
  Status: (0x00000200 (P_SYSTEMPROC))
*****************************************

论坛徽章:
0
发表于 2012-08-02 16:37 |显示全部楼层
回复 1# lxh3603
  1.     personball@vostro:SHELL$grep -oP "[\*]+|spid: \d+,|ptempdb_pages: \d+" file|awk -F'[:,]' 'BEGIN{RS="[*]+"} $4>=10{print $1":"$2}'

  2. spid: 3

  3. spid: 4
  4. personball@vostro:SHELL$
复制代码

论坛徽章:
0
发表于 2012-08-02 16:47 |显示全部楼层
回复 2# personball


谢谢!

SOLARIS 10系统,grep没有 oP 参数。

bash-3.00# bash -version
GNU bash, version 3.00.16(1)-release (sparc-sun-solaris2.10)
Copyright (C) 2004 Free Software Foundation, Inc.

bash-3.00# grep -h
Usage: grep -hblcnsviw pattern file . . .

论坛徽章:
0
发表于 2012-08-02 16:57 |显示全部楼层
回复 3# lxh3603
  1. personball@vostro:SHELL$awk -F'[:, ]+' 'BEGIN{RS="[*]+"}$11>=10{print $1" "$2 }' file

  2.         spid 3

  3.         spid 4
  4. personball@vostro:SHELL$
复制代码

论坛徽章:
0
发表于 2012-08-02 17:38 |显示全部楼层
回复 4# personball

谢谢!

难道最近俺RP出问题了?还是有问题:太长了。

awk: record `spid: 1, kpid: 13616...' too long

/usr/xpg4/bin/awk: line 0 (NR=1): Record too long (LIMIT: 19999 bytes)
   

论坛徽章:
0
发表于 2012-08-02 17:41 |显示全部楼层
回复 5# lxh3603


nawk只打出第一个满足条件的,不是所有的。

论坛徽章:
0
发表于 2012-08-02 17:56 |显示全部楼层
  1. awk -vFS="[:, \t]+" '/spid/{spid=$2};/ptempdb_pages/&&$4>=10{print "spid: "spid}' data
复制代码

论坛徽章:
0
发表于 2012-08-02 18:05 |显示全部楼层
回复 7# jiejie455


谢谢! 这个在我的环境中测试通过了,没有问题。   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP