Chinaunix

标题: 急。。。。求解。。。。。 [打印本页]

作者: M-H-J    时间: 2011-01-24 12:05
标题: 急。。。。求解。。。。。
这样的一个文件shell 可以处理吗?
------------------------------------------------------------------------
11607 |abc | 2011-01-17 12:53:06 +0800 (Mon, 17 Jan 2011) | 2 lines
        11111111111111111111111111
        22222222222222222222222222222
       


------------------------------------------------------------------------
11610 | def| 2011-01-17 15:24:27 +0800 (Mon, 17 Jan 2011) | 4 lines
        1111111111111111111111
        222222222222222222222222
        333333333333333333333333
        4444444444444444444444444


------------------------------------------------------------------------
11633 | abc | 2011-01-17 20:25:24 +0800 (Mon, 17 Jan 2011) | 2 lines

        11111111111111111111
        22222222222222222222
------------------------------------------------------------------------
11633 | abc | 2011-01-17 20:25:23 +0800 (Mon, 17 Jan 2011) | 4 lines
        111111111111111111111
        2222222222222222222222
        333333333333333333333333
        444444444444444444444444
-----------------------------------------------------------------------
11610 | def| 2011-01-17 15:24:27 +0800 (Mon, 17 Jan 2011) | 5 lines
        1111111111111111111111
        22222222222222222222
        33333333333333333333
        4444444444444444444444
        5555555555555555555555555
------------------------------------------------------------------------
过滤abc的
11633 | abc | 2011-01-17 20:25:23 +0800 (Mon, 17 Jan 2011) | 4 lines
        111111111111111111111
        2222222222222222222222
        333333333333333333333333
        444444444444444444444444

11633 | abc | 2011-01-17 20:25:24 +0800 (Mon, 17 Jan 2011) | 2 lines

        11111111111111111111
        22222222222222222222
11607 |abc | 2011-01-17 12:53:06 +0800 (Mon, 17 Jan 2011) | 2 lines
        11111111111111111111111111
        22222222222222222222222222222
作者: xiaopan3322    时间: 2011-01-24 12:21
把你的需求说清楚,是不是只要把含abc的东东够匹配出来
作者: xiaopan3322    时间: 2011-01-24 12:31
本帖最后由 xiaopan3322 于 2011-01-24 12:38 编辑

是这个意思吗:
  1. [12:36:10-Bob@hzling08:~/test]-(1160)No.37->$ sed -n "/abc/,/^-\+/p" urfile | egrep -v "^-|^$"
  2. 11607 |abc | 2011-01-17 12:53:06 +0800 (Mon, 17 Jan 2011) | 2 lines
  3.         11111111111111111111111111
  4.         22222222222222222222222222222

  5. 11633 | abc | 2011-01-17 20:25:24 +0800 (Mon, 17 Jan 2011) | 2 lines
  6.         11111111111111111111
  7.         22222222222222222222
  8. 11633 | abc | 2011-01-17 20:25:23 +0800 (Mon, 17 Jan 2011) | 4 lines
  9.         111111111111111111111
  10.         2222222222222222222222
  11.         333333333333333333333333
  12.         444444444444444444444444
复制代码

作者: cjaizss    时间: 2011-01-24 13:12

  1. sed -rn '/^[\^1]+\|\s*abc\s*\|/,/----/p' urfile | grep -v '\---'
复制代码

作者: yinyuemi    时间: 2011-01-24 13:14
本帖最后由 yinyuemi 于 2011-01-24 13:44 编辑

awk -v p=0 '/abc/{p=1}/^-/{p=0}p' file

awk '/^-/{x++;next}(NF>0) {a[x]=a[x]"\n"$0} END{for (i=1;i<=x;i++) if(a~/abc/) print  a}' file
作者: cjaizss    时间: 2011-01-24 13:20

  1. #!/bin/bash
  2. sed -rn '/^[^\|]+\|\s*'"$1"'\s*\|/{p;ba;};d;:a;n;/---/d;p;ba' $2
复制代码

作者: cjaizss    时间: 2011-01-24 13:24
  1. awk 'BEGIN{FS="|"}$2~/abc/{print;while(getline){if($0!~/---/)print;else next;}}' urfile
复制代码

作者: xiaopan3322    时间: 2011-01-24 13:38
如果没有排序的话
awk -v p=0 '/abc/{p=1}/^-/{p=0}p' file
yinyuemi 发表于 2011-01-24 13:14


学习……
作者: rdcwayx    时间: 2011-01-25 09:25
还有更短的。
  1. awk '/abc/' RS="--+" infile
复制代码

作者: yinyuemi    时间: 2011-01-25 09:29
回复 9# rdcwayx


    !牛~
作者: 禁飞区    时间: 2011-01-25 10:29
本帖最后由 禁飞区 于 2011-01-25 10:33 编辑

如果你要处理的内容, 里面只有abc和def 标签,

sed -e '/def/,/-/d' -e 's/-//g' ufile

结果如下:
11607 |abc | 20110117 12:53:06 +0800 (Mon, 17 Jan 2011) | 2 lines
        11111111111111111111111111
        22222222222222222222222222222




11633 | abc | 20110117 20:25:24 +0800 (Mon, 17 Jan 2011) | 2 lines

        11111111111111111111
        22222222222222222222

11633 | abc | 20110117 20:25:23 +0800 (Mon, 17 Jan 2011) | 4 lines
        111111111111111111111
        2222222222222222222222
        333333333333333333333333
        444444444444444444444444




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2