免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4202 | 回复: 16
打印 上一主题 下一主题

如何从指定文本中取出指定字符? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-27 16:42 |只看该作者 |倒序浏览
10可用积分
* WARNING: VERIFICATION FAILED    - VER 'LAST REPORT'
    FZ_828_S1240      2008-06-26  08:04:13  TH      
    S1240     0130/002C/0003  
    SEQ=1037+2008-06-26 04263  C74L109+   KYMQAB01   HSRRIF29   
    SWA-SUBSEC RM/PORT                                             

       DISPLAY-CAT-MARK                                               SUCCESSFUL
                                                           RESULT    PART 0002 +
       -------------------------------------------------------------------------
       EN PHYS (LOG)   & TN     DN                 A/I  MSN    GDN         
       -----------------------  ----------------   ---  -----  ----------------
       H'704  (H'85E0) & 50     7948291002          A   ~~~~~
                                                                        
      
       SERVICES :
                                                                        
         SUBGRP   :  1   
         SUBSIG   :  CBSET   
         PSWCAT   :  1   
         NBRIDFCD :  CGLIP   
         COL      :  NORMSUB
         BLNGLEV  :  1         NOIMMBIL

       REPORT FOLLOWS   04263

* WARNING: VERIFICATION FAILED    - 'LAST REPORT'
    FZ_828_S1240      2008-06-26  08:04:14  TH      
    S1240     0130/002C/0003  
    SEQ=1037+2008-06-26 04263  C74L109+   KYMQAB01   HSRRIF29   
    SWA-SUBSEC RM/PORT                                             

       DISPLAY-CAT-MARK                                               SUCCESSFUL
                                                           RESULT    PART 0003 +
       -------------------------------------------------------------------------
       EN PHYS (LOG)   & TN     DN                 A/I  MSN    GDN         
       -----------------------  ----------------   ---  -----  ----------------
       H'334  (H'8140) & 63     7948291006          A   ~~~~~
                                                                        
      
       SERVICES :
                                                                        
         SUBGRP   :  1   
         SUBSIG   :  CBSET   
         PSWCAT   :  1   
         NBRIDFCD :  CGLIP   
         COL      :  NORMSUB
         OCB      :  PERM      NAT     
         BLNGLEV  :  1         NOIMMBIL

       REPORT FOLLOWS   04263

* WARNING: VERIFICATION FAILED    - 'LAST REPORT'
    FZ_828_S1240      2008-06-26  08:04:14  TH      
    S1240     0130/002C/0003  
    SEQ=1037+2008-06-26 04263  C74L109+   KYMQAB01   HSRRIF29   
    SWA-SUBSEC RM/PORT                                             

       DISPLAY-CAT-MARK                                               SUCCESSFUL
                                                           RESULT    PART 0004 +
       -------------------------------------------------------------------------
       EN PHYS (LOG)   & TN     DN                 A/I  MSN    GDN         
       -----------------------  ----------------   ---  -----  ----------------
       H'426  (H'82A0) & 121    7948291008          A   ~~~~~
                                                                        
      
       SERVICES :
                                                                        
         SUBGRP   :  1   
         SUBSIG   :  CBSET   
         PSWCAT   :  1   
         NBRIDFCD :  CGLIP   
         COL      :  NORMSUB
         OCB      :  PERM      NAT     
         BLNGLEV  :  1         NOIMMBIL

       REPORT FOLLOWS   04263

* WARNING: VERIFICATION FAILED    - 'LAST REPORT'
    FZ_828_S1240      2008-06-26  08:04:16  TH      
    S1240     0130/002C/0003  
    SEQ=1037+2008-06-26 04263  C74L109+   KYMQAB01   HSRRIF29   
    SWA-SUBSEC RM/PORT                                             

       DISPLAY-CAT-MARK                                               SUCCESSFUL
                                                           RESULT    PART 0005 +
       -------------------------------------------------------------------------
       EN PHYS (LOG)   & TN     DN                 A/I  MSN    GDN         
       -----------------------  ----------------   ---  -----  ----------------
       H'405  (H'81D0) & 191    7948291009          A   ~~~~~
                                                                        
      
       SERVICES :
                                                                        
         SUBGRP   :  1   
         SUBSIG   :  CBSET   
         PSWCAT   :  1   
         NBRIDFCD :  CGLIP   
         COL      :  NORMSUB
         BLNGLEV  :  1         NOIMMBIL

       REPORT FOLLOWS   04263
DISPLAY-CAT-MARK                                               SUCCESSFUL
                                                           RESULT    PART 0513 +
       -------------------------------------------------------------------------
       EN PHYS (LOG)   & TN     DN                 A/I  MSN    GDN         
       -----------------------  ----------------   ---  -----  ----------------
       H'135  (H'7F10) & 196    7948288969          A   ~~~~~
                                                                        
      
       SERVICES :
                                                                        
         SUBGRP   :  1   
         SUBSIG   :  CBSET   
         PSWCAT   :  1   
         COL      :  NORMSUB
         OCB      :  PERM      INT     
         BLNGLEV  :  1         NOIMMBIL。。。。。。。

需要取出含794字符开始的10位字符输出,再判断是否含OCB字符,有则输出OCB开始的25位字符, 然后以换行回车结束,再取出含794字符开始的10位字符,循环。请各位大师赐教。
结果显示如下:
7948291002
7948291006OCB      :  PERM      NAT
7948291008OCB      :  PERM      NAT
7948291009OCB      :  PERM      NAT
7948288969OCB      :  PERM      NAT

最佳答案

论坛徽章:
0
2 [报告]
发表于 2008-06-27 16:42 |只看该作者

try:

  1. awk '/794/{a[++idx]=$5};/OCB/{b[idx]=$0} END{for (i=1;i<=idx;i++)print a[i],b[i]}' file
复制代码

论坛徽章:
0
3 [报告]
发表于 2008-06-27 16:55 |只看该作者
想找其中的规律有点难度啊

论坛徽章:
0
4 [报告]
发表于 2008-06-27 17:11 |只看该作者
没看太懂,grep了一把,只有3个地方出现OCB啊

论坛徽章:
0
5 [报告]
发表于 2008-06-27 17:27 |只看该作者
只是截取了文本文件部分内容。。

论坛徽章:
0
6 [报告]
发表于 2008-06-27 17:28 |只看该作者
for i in `grep -o "794......." file`;do echo $i `grep "$i" -A13 file|grep -o "OCB.\{22\}"`;done
把file改成你的文件名

论坛徽章:
0
7 [报告]
发表于 2008-06-27 17:30 |只看该作者
取出含794字符开始的10位字符怎么做呢?

论坛徽章:
0
8 [报告]
发表于 2008-06-27 17:40 |只看该作者
grep -o "794......."

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
9 [报告]
发表于 2008-06-27 17:48 |只看该作者

回复 #1 ZHZYHQ 的帖子

try:
  1. awk --re-interval -f scr.awk urfile
复制代码


src.awk:
BEGIN { RS = "WARNING:" }

/794[0-9]{7}/{
  if (/OCB/) print gensub(/.*(794[0-9]{7}).*(OCB[^\n]*:[^:\n]*).*/,"\\1\\2\\3","g")
  else print gensub(/.*(794[0-9]{7}).*/,"\\1","g")

[ 本帖最后由 blackold 于 2008-6-27 18:40 编辑 ]

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
10 [报告]
发表于 2008-06-27 18:33 |只看该作者

回复 #1 ZHZYHQ 的帖子

非gawk版:
try:
  1. awk -f scr.awk urfile
复制代码


src.awk:
BEGIN { RS = "WARNING:" }

/794[0-9][0-9][0-9][0-9][0-9][0-9][0-9]/{
  if ( /OCB/) {sub(/^.*794/,"794"); sub(/[^0-9].*OCB/,"OCB");sub(/\n.*/,"")}
  else {sub(/^.*794/,"794"); sub(/[^0-9].*/,"")}
  print
  }

[ 本帖最后由 blackold 于 2008-6-27 18:56 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP