免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3612 | 回复: 10

[文本处理] 求助!如何让 字符串A 变成 字符串B 的值 [复制链接]

论坛徽章:
2
2015亚冠之德黑兰石油
日期:2015-05-26 13:52:28程序设计版块每日发帖之星
日期:2015-06-09 22:20:00
发表于 2015-06-08 19:38 |显示全部楼层
1、对以下字符进行处理,

  1. path="/p1" doc="/url/www/text1.log" tableFormat="false"/
  2. path="/p2" doc="/url/ftp/text2.log" tableFormat="true"/
  3. path="/p3" doc="/url/text3.log" tableFormat="false"/
复制代码
得到

  1. ~]# echo ${var_p1}
  2. /url/www/text1.log
  3. ~]# echo ${var_p2}
  4. /url/ftp/text2.log
  5. ~]# echo ${var_p3}
  6. /url/text3.log
复制代码
2、对下面字符进行处理,得到与上面相同的结果

  1. tableFormat="false"/ path="/p1" doc="/url/www/text1.log" tableFormat="false"/  path="/p2" doc="/url/ftp/text2.log" tableFormat="true"/   path="/p3" doc="/url/text3.log"
复制代码
@ 我尝试先进行分组,然后输出给 awk
进行以下操作

  1. awk '{ str="var_" $1 "=" $2; system(str) }'
复制代码
但是分组总不成功

论坛徽章:
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
发表于 2015-06-08 20:25 |显示全部楼层
本帖最后由 songyc_2015 于 2015-06-08 20:41 编辑

回复 1# raps
  1. 1.eval $(awk '{match($0,/path="\/([^"]+)" doc="\/([^"]+)"/,a);print "var_"a[1]"="a[2]}' file)
  2.   eval $(sed -r 's# *path="/([^"]+)" *doc="([^"]+)".*#var_\1=\2;#' file)
  3. 2.eval $(awk -F'[="]+' -vRS=' ' '/doc/{print "var_"s"="$2}/path/{s=$2;sub(/\//,"",s)}' file)
  4.   eval $(sed -r 's#[^ ]* *path="/([^"]+)" *doc="([^"]+)" *#var_\1=\2;#g' file)
复制代码

论坛徽章:
0
发表于 2015-06-08 20:28 |显示全部楼层
  1. eval $(awk -F'\"' '{for(i=4;i<NF;i+=6){sub(/\//,"",$i);print "var_"$i"="$(i+2)}}' FILE)
复制代码
比较耍赖的写法

论坛徽章:
2
2015亚冠之德黑兰石油
日期:2015-05-26 13:52:28程序设计版块每日发帖之星
日期:2015-06-09 22:20:00
发表于 2015-06-08 20:31 |显示全部楼层
本帖最后由 raps 于 2015-06-08 20:35 编辑

……为什么都喜欢用 eval ……,而且几乎没有用管道命令的。
虽然这样很厉害,但是对初学者太难了……

论坛徽章:
0
发表于 2015-06-09 07:14 |显示全部楼层
回复 4# raps


    当你身边有座的地铁和拥挤的公交,你会选择哪个呢?

论坛徽章:
11
射手座
日期:2015-08-11 16:10:26辰龙
日期:2015-08-11 16:11:11黑曼巴
日期:2016-04-26 16:58:40
发表于 2015-06-09 09:05 |显示全部楼层
回复 5# liuyu85


    骗子,地铁也是爆挤的

论坛徽章:
0
发表于 2015-06-09 09:22 |显示全部楼层
回复 6# hjfeng1988


    好吧,同样挤爆,要去20公里以外的地方,你选择地铁还是公交?

论坛徽章:
2
2015亚冠之德黑兰石油
日期:2015-05-26 13:52:28程序设计版块每日发帖之星
日期:2015-06-09 22:20:00
发表于 2015-06-09 09:29 |显示全部楼层
回复 7# liuyu85


    地铁准时,公交便宜,看看我需要什么。准时到达还是图省钱……

论坛徽章:
11
射手座
日期:2015-08-11 16:10:26辰龙
日期:2015-08-11 16:11:11黑曼巴
日期:2016-04-26 16:58:40
发表于 2015-06-09 09:59 |显示全部楼层
回复 4# raps


    有管道符的
    第一题:
  1. sed -e 's/ path="\//var_/' -e 's/" doc\| table.*//g' file
复制代码

论坛徽章:
22
处女座
日期:2014-10-11 13:33:292015亚冠之塔什干火车头
日期:2015-07-20 19:59:042015亚冠之塔什干火车头
日期:2015-07-26 10:59:31程序设计版块每日发帖之星
日期:2015-08-05 06:20:00每日论坛发贴之星
日期:2015-08-05 06:20:00程序设计版块每日发帖之星
日期:2015-08-07 06:20:00每日论坛发贴之星
日期:2015-08-07 06:20:002015亚冠之阿尔纳斯尔
日期:2015-10-01 15:23:28白银圣斗士
日期:2015-12-07 17:17:06操作系统版块每日发帖之星
日期:2015-12-27 06:20:002015亚冠之广州富力
日期:2015-07-08 15:48:31程序设计版块每日发帖之星
日期:2015-06-11 22:20:00
发表于 2015-06-10 14:32 |显示全部楼层
eval `awk -F '"/|"' '{print "var_"$2"=/"$4}' file`
echo ${var_p1}
/url/www/text1.log
echo ${var_p2}
/url/ftp/text2.log
echo ${var_p3}
/url/text3.log
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP