免费注册 查看新帖 |

Chinaunix

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

[文本处理] 滤出文件某范围之间文字 [复制链接]

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:49:03
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-04-18 10:59 |只看该作者 |倒序浏览
本帖最后由 shihyu 于 2015-04-18 11:00 编辑
  1. [+]
  2. aaa
  3. bbb
  4. [-]
  5. ccc
  6. ddd
  7. [+]
  8. ggg
  9. hhh
  10. [-]
  11. iiiii
  12. kkkk
复制代码
我想把上面文件 [+] [-] 之间每行保留下来其余不要 , 有什么简单的方式可以做到 ?

只保留下面

aaa
bbb
ggg
hhh

论坛徽章:
20
卯兔
日期:2015-01-26 22:05:142015亚冠之萨济拖拉机
日期:2015-09-10 15:15:282015亚冠之阿尔希拉尔
日期:2015-09-25 17:37:53程序设计版块每日发帖之星
日期:2015-10-03 06:20:00程序设计版块每日发帖之星
日期:2015-12-09 06:20:00CU十四周年纪念徽章
日期:2015-12-17 09:07:15程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:342015亚冠之广州富力
日期:2015-08-27 19:29:56每日论坛发贴之星
日期:2015-08-26 06:20:002015亚冠之阿尔希拉尔
日期:2015-05-18 17:26:27
2 [报告]
发表于 2015-04-18 11:20 |只看该作者
回复 1# shihyu

awk '/\+/{p=1;next}/-/{p=0}p' urfile
   

论坛徽章:
20
卯兔
日期:2015-01-26 22:05:142015亚冠之萨济拖拉机
日期:2015-09-10 15:15:282015亚冠之阿尔希拉尔
日期:2015-09-25 17:37:53程序设计版块每日发帖之星
日期:2015-10-03 06:20:00程序设计版块每日发帖之星
日期:2015-12-09 06:20:00CU十四周年纪念徽章
日期:2015-12-17 09:07:15程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:342015亚冠之广州富力
日期:2015-08-27 19:29:56每日论坛发贴之星
日期:2015-08-26 06:20:002015亚冠之阿尔希拉尔
日期:2015-05-18 17:26:27
3 [报告]
发表于 2015-04-18 11:29 |只看该作者
补一个sed的

sed -rn '/\+/{:a;N;/-/!ba;s#\n?\[[+-]\]\n?##g;p}' urfile

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:49:03
4 [报告]
发表于 2015-04-18 11:43 |只看该作者
本帖最后由 shihyu 于 2015-04-18 11:44 编辑
  1. tcpdump: listening on wlan0, link-type EN10MB (Ethernet), capture size 262144 bytes
  2. 01:40:48.292932 bc:ae:c5:80:81:84 (oui Unknown) Null > 01:80:c2:00:00:00 (oui Unknown) Unknown DSAP 0x80 Information, send seq 94, rcv seq 87, Flags [Command], length 30
  3. 01:40:50.086981 IP (tos 0x0, ttl 64, id 34075, offset 0, flags [DF], proto TCP (6), length 60)
  4.     192.168.2.5.51529 > 1.4.46.7.1723: Flags [S], cksum 0x6caf (incorrect -> 0x85d2), seq 3766383546, win 14600, options [mss 1460,sackOK,TS val 29816481 ecr 0,nop,wscale 6], length 0
  5. [+]
  6. 01:40:50.129679 IP (tos 0x0, ttl 62, id 0, offset 0, flags [DF], proto TCP (6), length 60)
  7.     1.4.46.7.1723 > 192.168.2.5.51529: Flags [S.], cksum 0x0db5 (correct), seq 2605056959, ack 3766383547, win 28800, options [mss 1452,sackOK,TS val 33202075 ecr 29816481,nop,wscale 7], length 0
  8. 01:40:50.129862 IP (tos 0x0, ttl 64, id 34076, offset 0, flags [DF], proto TCP (6), length 52)
  9.     192.168.2.5.51529 > 1.4.46.7.1723: Flags [.], cksum 0x6ca7 (incorrect -> 0xac10), seq 1, ack 1, win 229, options [nop,nop,TS val 29816485 ecr 33202075], length 0
  10. 01:40:50.130045 IP (tos 0x0, ttl 64, id 34077, offset 0, flags [DF], proto TCP (6), length 208)
  11.     192.168.2.5.51529 > 1.4.46.7.1723: Flags [P.], cksum 0x268f (correct), seq 1:157, ack 1, win 229, options [nop,nop,TS val 29816485 ecr 33202075], length 156: pptp Length=156 CTRL-MSG Magic-Cookie=1a2b3c4d CTRL_MSGTYPE=SCCRQ PROTO_VER(1.0) FRAME_CAP(AS) BEARER_CAP(DA) MAX_CHAN(1) FIRM_REV(0) HOSTNAME(anonymous) VENDOR()
  12. 01:40:50.163495 IP (tos 0x0, ttl 62, id 40036, offset 0, flags [DF], proto TCP (6), length 52)
  13. [-]


  14.     1.4.46.7.1723 > 192.168.2.5.51529: Flags [.], cksum 0xab66 (correct), seq 1, ack 157, win 234, options [nop,nop,TS val 33202084 ecr 29816485], length 0
  15. 01:40:50.167554 IP (tos 0x0, ttl 62, id 40037, offset 0, flags [DF], proto TCP (6), length 208)
  16.     1.4.46.7.1723 > 192.168.2.5.51529: Flags [P.], cksum 0xc2f7 (correct), seq 1:157, ack 157, win 234, options [nop,nop,TS val 33202085 ecr 29816485], length 156: pptp Length=156 CTRL-MSG Magic-Cookie=1a2b3c4d CTRL_MSGTYPE=SCCRP PROTO_VER(1.0) RESULT_CODE(1:Successful channel establishment) ERR_CODE(0:None) FRAME_CAP() BEARER_CAP() MAX_CHAN(1) FIRM_REV(1) HOSTNAME(local) VENDOR(linux)
  17. 01:40:50.167676 IP (tos 0x0, ttl 64, id 34078, offset 0, flags [DF], proto TCP (6), length 52)
  18.     192.168.2.5.51529 > 1.4.46.7.1723: Flags [.], cksum 0x6ca7 (incorrect -> 0xaaba), seq 157, ack 157, win 245, options [nop,nop,TS val 29816489 ecr 33202085], length 0
  19. 01:40:50.167860 IP (tos 0x0, ttl 64, id 34079, offset 0, flags [DF], proto TCP (6), length 220)
  20.     192.168.2.5.51529 > 111111.cksum 0xe372 (correct), seq 157:325, ack 157, win 245, options [nop,nop,TS val 29816489 ecr 33202085], length 168: pptp Length=168 CTRL-MSG Magic-Cookie=1a2b3c4d CTRL_MSGTYPE=OCRQ CALL_ID(43837) CALL_SER_NUM(47437) MIN_BPS(1000) MAX_BPS(100000000) BEARER_TYPE(Any) FRAME_TYPE(E) RECV_WIN(8192) PROC_DELAY(0) PHONE_NO_LEN(0) PHONE_NO() SUB_ADDR()
  21. 01:40:50.205613 IP (tos 0x0, ttl 62, id 40038, offset 0, flags [DF], proto TCP (6), length 84)
  22.     1.4.46.7.1723 > 192.168.2.5.51529: Flags [P.], cksum 0x9e8f (correct), seq 157:189, ack 325, win 242, options [nop,nop,TS val 33202094 ecr 29816489], length 32: pptp Length=32 CTRL-MSG Magic-Cookie=1a2b3c4d CTRL_MSGTYPE=OCRP CALL_ID(384) PEER_CALL_ID(43837) RESULT_CODE(1:Connected) ERR_CODE(0:None) CAUSE_CODE(0) CONN_SPEED(100000000) RECV_WIN(8192) PROC_DELAY(0) PHY_CHAN_ID(0)
  23. 01:40:50.211351 IP (tos 0x0, ttl 62, id 40039, offset 0, flags [DF], proto TCP (6), length 52)
  24.     1.4.46.7.1723 > 192.168.2.5.51529: Flags [F.], cksum 0xa9e9 (correct), seq 189, ack 325, win 242, options [nop,nop,TS val 33202096 ecr 29816489], length 0
  25. 01:40:50.212816 IP (tos 0x0, ttl 64, id 34080, offset 0, flags [DF], proto TCP (6), length 52)
  26.     192.168.2.5.51529 > 1.4.46.7.1723: Flags [F.], cksum 0x6ca7 (incorrect -> 0xa9e2), seq 325, ack 190, win 245, options [nop,nop,TS val 29816494 ecr 33202094], length 0
  27. 01:40:50.236927 bc:ae:c5:80:81:84 (oui Unknown) Null > 01:80:c2:00:00:00 (oui Unknown) Unknown DSAP 0x80 Information, send seq 94, rcv seq 87, Flags [Command], length 30
  28. 01:40:50.247640 IP (tos 0x0, ttl 62, id 40040, offset 0, flags [DF], proto TCP (6), length 52)
  29.     1.4.46.7.1723 > 192.168.2.5.51529: Flags [.], cksum 0xa9db (correct), seq 190, ack 326, win 242, options [nop,nop,TS val 33202104 ecr 29816494], length 0
  30. 01:40:51.218249 IP (tos 0x0, ttl 64, id 11965, offset 0, flags [DF], proto TCP (6), length 60)
  31.     192.168.2.5.47401 > 23.49.116.211.443: Flags [S], cksum 0x4ee0 (incorrect -> 0x6a7b), seq 3361659311, win 14600, options [mss 1460,sackOK,TS val 29816594 ecr 0,nop,wscale 6], length 0
  32. 01:40:51.246602 IP (tos 0x0, ttl 60, id 0, offset 0, flags [DF], proto TCP (6), length 60)
  33.     23.49.116.211.443 > 192.168.2.5.47401: Flags [S.], cksum 0x7804 (correct), seq 3244102258, ack 3361659312, win 14480, options [mss 1460,sackOK,TS val 1356647986 ecr 29816594,nop,wscale 5], length 0
  34. 01:40:51.246938 IP (tos 0x0, ttl 64, id 11966, offset 0, flags [DF], proto TCP (6), length 52)
  35.     192.168.2.5.47401 > 23.49.116.211.443: Flags [.], cksum 0x4ed8 (incorrect -> 0xde76), seq 1, ack 1, win 229, options [nop,nop,TS val 29816597 ecr 1356647986], length 0
  36. 01:40:51.254934 IP (tos 0x0, ttl 64, id 11967, offset 0, flags [DF], proto TCP (6), length 427)
  37.     192.168.2.5.47401 > 23.49.116.211.443: Flags [P.], cksum 0x89af (correct), seq 1:376, ack 1, win 229, options [nop,nop,TS val 29816598 ecr 1356647986], length 375
  38. 01:40:51.278954 IP (tos 0x0, ttl 60, id 56375, offset 0, flags [DF], proto TCP (6), length 52)
  39.     23.49.116.211.443 > 192.168.2.5.47401: Flags [.], cksum 0xdbde (correct), seq 1, ack 376, win 486, options [nop,nop,TS val 1356648017 ecr 29816598], length 0
  40. 01:40:51.280449 IP (tos 0x0, ttl 60, id 56376, offset 0, flags [DF], proto TCP (6), length 197)
  41.     23.49.116.211.443 > 192.168.2.5.47401: Flags [P.], cksum 0xe9b4 (correct), seq 1:146, ack 376, win 486, options [nop,nop,TS val 1356648018 ecr 29816598], length 145
  42. 01:40:51.280846 IP (tos 0x0, ttl 64, id 11968, offset 0, flags [DF], proto TCP (6), length 52)
  43.     192.168.2.5.47401 > 23.49.116.211.443: Flags [.], cksum 0x4ed8 (incorrect -> 0xdc3b), seq 376, ack 146, win 245, options [nop,nop,TS val 29816600 ecr 1356648018], length 0
  44. 01:40:51.286889 IP (tos 0x0, ttl 64, id 11969, offset 0, flags [DF], proto TCP (6), length 111)
  45.     192.168.2.5.47401 > 23.49.116.211.443: Flags [P.], cksum 0x3a06 (correct), seq 376:435, ack 146, win 245, options [nop,nop,TS val 29816601 ecr 1356648018], length 59
  46. 01:40:51.351348 IP (tos 0x0, ttl 60, id 56377, offset 0, flags [DF], proto TCP (6), length 52)
  47.     23.49.116.211.443 > 192.168.2.5.47401: Flags [.], cksum 0xdac5 (correct), seq 146, ack 435, win 486, options [nop,nop,TS val 1356648091 ecr 29816601], length 0
  48. 01:40:51.351775 IP (tos 0x0, ttl 64, id 11970, offset 0, flags [DF], proto TCP (6), length 233)
  49.     192.168.2.5.47401 > 23.49.116.211.443: Flags [P.], cksum 0x09c1 (correct), seq 435:616, ack 146, win 245, options [nop,nop,TS val 29816607 ecr 1356648091], length 181
  50. 01:40:51.372010 IP (tos 0x0, ttl 60, id 56378, offset 0, flags [DF], proto TCP (6), length 52)
  51.     23.49.116.211.443 > 192.168.2.5.47401: Flags [.], cksum 0xd9d4 (correct), seq 146, ack 616, win 520, options [nop,nop,TS val 1356648111 ecr 29816607], length 0
  52. 01:40:51.522110 IP (tos 0x0, ttl 60, id 56379, offset 0, flags [DF], proto TCP (6), length 1433)
  53.     23.49.116.211.443 > 192.168.2.5.47401: Flags [P.], cksum 0x7df0 (correct), seq 146:1527, ack 616, win 520, options [nop,nop,TS val 1356648260 ecr 29816607], length 1381
  54. 01:40:51.561664 IP (tos 0x0, ttl 64, id 11971, offset 0, flags [DF], proto TCP (6), length 52)
  55.     192.168.2.5.47401 > 23.49.116.211.443: Flags [.], cksum 0x4ed8 (incorrect -> 0xd4ab), seq 616, ack 1527, win 289, options [nop,nop,TS val 29816629 ecr 1356648260], length 0
  56. 01:40:52.286767 bc:ae:c5:80:81:84 (oui Unknown) Null > 01:80:c2:00:00:00 (oui Unknown) Unknown DSAP 0x80 Information, send seq 94, rcv seq 87, Flags [Command], length 30
复制代码
好像無法正確濾出下面幾行
  1. 01:40:50.129679 IP (tos 0x0, ttl 62, id 0, offset 0, flags [DF], proto TCP (6), length 60)
  2.     1.4.46.7.1723 > 192.168.2.5.51529: Flags [S.], cksum 0x0db5 (correct), seq 2605056959, ack 3766383547, win 28800, options [mss 1452,sackOK,TS val 33202075 ecr 29816481,nop,wscale 7], length 0
  3. 01:40:50.129862 IP (tos 0x0, ttl 64, id 34076, offset 0, flags [DF], proto TCP (6), length 52)
  4.     192.168.2.5.51529 > 1.4.46.7.1723: Flags [.], cksum 0x6ca7 (incorrect -> 0xac10), seq 1, ack 1, win 229, options [nop,nop,TS val 29816485 ecr 33202075], length 0
  5. 01:40:50.130045 IP (tos 0x0, ttl 64, id 34077, offset 0, flags [DF], proto TCP (6), length 208)
  6.     192.168.2.5.51529 > 1.4.46.7.1723: Flags [P.], cksum 0x268f (correct), seq 1:157, ack 1, win 229, options [nop,nop,TS val 29816485 ecr 33202075], length 156: pptp Length=156 CTRL-MSG Magic-Cookie=1a2b3c4d CTRL_MSGTYPE=SCCRQ PROTO_VER(1.0) FRAME_CAP(AS) BEARER_CAP(DA) MAX_CHAN(1) FIRM_REV(0) HOSTNAME(anonymous) VENDOR()
  7. 01:40:50.163495 IP (tos 0x0, ttl 62, id 40036, offset 0, flags [DF], proto TCP (6), length 52)
复制代码

论坛徽章:
20
卯兔
日期:2015-01-26 22:05:142015亚冠之萨济拖拉机
日期:2015-09-10 15:15:282015亚冠之阿尔希拉尔
日期:2015-09-25 17:37:53程序设计版块每日发帖之星
日期:2015-10-03 06:20:00程序设计版块每日发帖之星
日期:2015-12-09 06:20:00CU十四周年纪念徽章
日期:2015-12-17 09:07:15程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:342015亚冠之广州富力
日期:2015-08-27 19:29:56每日论坛发贴之星
日期:2015-08-26 06:20:002015亚冠之阿尔希拉尔
日期:2015-05-18 17:26:27
5 [报告]
发表于 2015-04-18 11:53 |只看该作者
补一个grep的

grep -Pzo '(?<=\[\+\]\n)([^\+\-]*)+(?=\n\[-\])' urfile

论坛徽章:
9
射手座
日期:2014-07-29 13:05:07双子座
日期:2015-01-11 17:01:522015年亚洲杯之朝鲜
日期:2015-02-01 16:14:282015亚冠之阿尔艾因
日期:2015-06-04 17:54:40数据库技术版块每日发帖之星
日期:2015-08-02 06:20:00数据库技术版块每日发帖之星
日期:2015-10-28 06:20:00数据库技术版块每日发帖之星
日期:2015-11-26 06:20:0015-16赛季CBA联赛之天津
日期:2016-06-20 17:09:2015-16赛季CBA联赛之青岛
日期:2017-02-26 15:54:19
6 [报告]
发表于 2015-04-18 13:22 |只看该作者
  1. sed -n '/\[+\]/{:a;N;/\[-\]/!ba;s/\[+\]\(.*\)\[-\]/\1/;p}'
复制代码

论坛徽章:
9
射手座
日期:2014-07-29 13:05:07双子座
日期:2015-01-11 17:01:522015年亚洲杯之朝鲜
日期:2015-02-01 16:14:282015亚冠之阿尔艾因
日期:2015-06-04 17:54:40数据库技术版块每日发帖之星
日期:2015-08-02 06:20:00数据库技术版块每日发帖之星
日期:2015-10-28 06:20:00数据库技术版块每日发帖之星
日期:2015-11-26 06:20:0015-16赛季CBA联赛之天津
日期:2016-06-20 17:09:2015-16赛季CBA联赛之青岛
日期:2017-02-26 15:54:19
7 [报告]
发表于 2015-04-18 13:34 |只看该作者
回复 2# songyc_2015

第一次发现awk这种用法能做sed循环的事情,新技能get,不过此题要改进下正则表达式
  1. awk '/\[\+\]/{p=1;next}/\[\-\]/{p=0}p'
复制代码

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
8 [报告]
发表于 2015-04-18 13:41 |只看该作者
好无聊啊~~~ 加班~~~

论坛徽章:
20
卯兔
日期:2015-01-26 22:05:142015亚冠之萨济拖拉机
日期:2015-09-10 15:15:282015亚冠之阿尔希拉尔
日期:2015-09-25 17:37:53程序设计版块每日发帖之星
日期:2015-10-03 06:20:00程序设计版块每日发帖之星
日期:2015-12-09 06:20:00CU十四周年纪念徽章
日期:2015-12-17 09:07:15程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:342015亚冠之广州富力
日期:2015-08-27 19:29:56每日论坛发贴之星
日期:2015-08-26 06:20:002015亚冠之阿尔希拉尔
日期:2015-05-18 17:26:27
9 [报告]
发表于 2015-04-18 13:44 |只看该作者
回复 4# shihyu


你给的测试数据和真实数据有差异,过滤不出来是正常的,试试下面的:
awk '/^\[\+\]/{p=1;next}/^\[-\]/{p=0}p' urfile
sed -rn '/\[\+\]/{:a;N;/\[-\]/!ba;s#\n?\[[+-]\]\n?##g;p}' urfile

grep不知道怎么写,坐等大神

论坛徽章:
20
卯兔
日期:2015-01-26 22:05:142015亚冠之萨济拖拉机
日期:2015-09-10 15:15:282015亚冠之阿尔希拉尔
日期:2015-09-25 17:37:53程序设计版块每日发帖之星
日期:2015-10-03 06:20:00程序设计版块每日发帖之星
日期:2015-12-09 06:20:00CU十四周年纪念徽章
日期:2015-12-17 09:07:15程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:342015亚冠之广州富力
日期:2015-08-27 19:29:56每日论坛发贴之星
日期:2015-08-26 06:20:002015亚冠之阿尔希拉尔
日期:2015-05-18 17:26:27
10 [报告]
发表于 2015-04-18 13:48 |只看该作者
回复 8# reyleon

六神,反正也是无聊,来一发grep的呗,按照楼主给最开始给的测试数据,grep -Pzo '(?<=\[\+\]\n)([^\+\-]*)+(?=\n\[-\])' urfile是正常的,
但后来用楼主给的真实数据测试,发现报错如下,请大神指正

$grep -Pzo '(?<=\[\+\]\n)([^\+\-]*)+\n(?=\n\[-\])' sss
已放弃 (core dumped)

$uname -a
Linux localhost.localdomain 2.6.32-71.el6.i686 #1 SMP Wed Sep 1 01:26:34 EDT 2010 i686 i686 i386 GNU/Linux
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP