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 编辑
是这个意思吗:
[12:36:10-Bob@hzling08:~/test]-(1160)No.37->$ sed -n "/abc/,/^-\+/p" urfile | egrep -v "^-|^$"
11607 |abc | 2011-01-17 12:53:06 +0800 (Mon, 17 Jan 2011) | 2 lines
11111111111111111111111111
22222222222222222222222222222
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
复制代码
作者:
cjaizss
时间:
2011-01-24 13:12
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
#!/bin/bash
sed -rn '/^[^\|]+\|\s*'"$1"'\s*\|/{p;ba;};d;:a;n;/---/d;p;ba' $2
复制代码
作者:
cjaizss
时间:
2011-01-24 13:24
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
还有更短的。
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