免费注册 查看新帖 |

Chinaunix

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

[文本处理] 如果用for循环将类似这个文件格式的值取出来? [复制链接]

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-02-17 06:20:00
发表于 2017-02-15 18:05 |显示全部楼层
ls_list+=(192.168.10.1:game1)
ls_list+=(192.168.10.2:game2)
ls_list+=(192.168.10.3:game3)
ls_list+=(192.168.10.4:game4)
ls_list+=(192.168.10.5:game5)

ip  192.168.10.5  目录 game5  id 5  每行要一一对应,求高手!!

论坛徽章:
28
15-16赛季CBA联赛之八一
日期:2016-02-22 19:10:4215-16赛季CBA联赛之深圳
日期:2016-12-01 10:34:0415-16赛季CBA联赛之新疆
日期:2016-12-07 10:24:2915-16赛季CBA联赛之同曦
日期:2016-12-15 12:06:43CU十四周年纪念徽章
日期:2016-12-18 13:03:4415-16赛季CBA联赛之吉林
日期:2017-01-03 15:52:2515-16赛季CBA联赛之辽宁
日期:2017-01-04 14:58:2415-16赛季CBA联赛之辽宁
日期:2017-01-15 09:42:512016科比退役纪念章
日期:2017-02-06 17:21:50黑曼巴
日期:2017-02-10 15:46:1215-16赛季CBA联赛之上海
日期:2017-03-18 10:14:5415-16赛季CBA联赛之青岛
日期:2017-03-18 22:00:44
发表于 2017-02-15 20:00 |显示全部楼层

  1. sed -r 's/.*\((.*):([^0-9]+([0-9]+)).*/ip \1 目录 \2 id \3/'
复制代码

?

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
发表于 2017-02-15 23:59 |显示全部楼层
game 后面接的是 ID 吗,

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
发表于 2017-02-16 07:05 |显示全部楼层
本帖最后由 jason680 于 2017-02-16 09:25 编辑

回复 1# yabo300

$ cat FILE
ls_list+=(192.168.10.1:game1)
ls_list+=(192.168.10.2:game2)
ls_list+=(192.168.10.3:game3)
ls_list+=(192.168.10.4:game4)
ls_list+=(192.168.10.5:game5)

$ awk '/ls_list/{if(match($0,"[(]([^:]+):([^)]+)[)]",a))print "ip",a[1],"目录",a[2],"id",++id}' FILE
ip 192.168.10.1 目录 game1 id 1
ip 192.168.10.2 目录 game2 id 2
ip 192.168.10.3 目录 game3 id 3
ip 192.168.10.4 目录 game4 id 4
ip 192.168.10.5 目录 game5 id 5

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
发表于 2017-02-16 09:18 |显示全部楼层
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. while (<DATA>){
  5.         my @aT = grep (length, /([\d.]+)|(\w+(\d))/g);
  6.         printf ("IP %s, Dir %s, ID %s\n", @aT);
  7. }

  8. __DATA__
  9. ls_list+=(192.168.10.1:game1)
  10. ls_list+=(192.168.10.2:game2)
  11. ls_list+=(192.168.10.3:game3)
  12. ls_list+=(192.168.10.4:game4)
  13. ls_list+=(192.168.10.5:game5)
复制代码

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
发表于 2017-02-16 09:19 |显示全部楼层
perl abc.pl
-----------------------
IP 192.168.10.1, Dir game1, ID 1
IP 192.168.10.2, Dir game2, ID 2
IP 192.168.10.3, Dir game3, ID 3
IP 192.168.10.4, Dir game4, ID 4
IP 192.168.10.5, Dir game5, ID 5

论坛徽章:
0
发表于 2017-02-16 09:56 |显示全部楼层
[admin@yh126 ~]$ cat 1
ls_list+=(192.168.10.1:game1)
ls_list+=(192.168.10.2:game2)
ls_list+=(192.168.10.3:game3)
ls_list+=(192.168.10.4:game4)
ls_list+=(192.168.10.5:game5)
[admin@yh126 ~]$ awk -F '[():]' '{print "ip "$2" 目录 "$3" id "FNR}' 1 1
ip 192.168.10.1 目录 game1 id 1
ip 192.168.10.2 目录 game2 id 2
ip 192.168.10.3 目录 game3 id 3
ip 192.168.10.4 目录 game4 id 4
ip 192.168.10.5 目录 game5 id 5

论坛徽章:
0
发表于 2017-02-16 11:10 |显示全部楼层
  1. sed -E  's/.*\((([0-9]{1,3}.){3}([0-9]{1,3})):(.*)\)/ip \1 dir \4 id \3/'
复制代码

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-09-07 06:20:00程序设计版块每日发帖之星
日期:2015-09-07 06:20:00
发表于 2017-02-19 20:28 |显示全部楼层
  1. [root@CentOS_6 experiment]# awk -F [\(:\)] '{split($2,array,"\.");printf("%-3s%-13s%-4s%-6s%-3s%-3s\n","ip",$2,"dir",$3,"id",array[4]);}' a.txt ^C
  2. [root@CentOS_6 experiment]# cat a.txt
  3. ls_list+=(192.168.10.1:game1)
  4. ls_list+=(192.168.10.2:game2)
  5. ls_list+=(192.168.10.3:game3)
  6. ls_list+=(192.168.10.4:game4)
  7. ls_list+=(192.168.10.5:game5)
  8. [root@CentOS_6 experiment]# awk -F [\(:\)] '{split($2,array,"\.");printf("%-3s%-13s%-4s%-6s%-3s%-3s\n","ip",$2,"dir",$3,"id",array[4]);}' a.txt
  9. awk: 警告: 转义序列“\.”被当作单纯的“.”
  10. ip 192.168.10.1 dir game1 id 1  
  11. ip 192.168.10.2 dir game2 id 2  
  12. ip 192.168.10.3 dir game3 id 3  
  13. ip 192.168.10.4 dir game4 id 4  
  14. ip 192.168.10.5 dir game5 id 5
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP