免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: ylypt123
打印 上一主题 下一主题

[文本处理] shell怎么比较两个列表或数组 [复制链接]

论坛徽章:
1
15-16赛季CBA联赛之江苏
日期:2016-10-26 16:19:04
11 [报告]
发表于 2016-09-27 09:52 |只看该作者
awk 'NR==FNR{for(i=1;i<=NF;i++)a[$i]=$i}{for(i=1;i<=NF;i++)if(!a[$i])b[$i]=$i}END{for(i=1;i<=asorti(b,c);i++)print b[c[i]]}'  变量1 变量2
变换最后两个的位置,可以求出不同的结果。

论坛徽章:
1
15-16赛季CBA联赛之广东
日期:2016-07-18 17:38:18
12 [报告]
发表于 2016-09-27 11:15 |只看该作者
回复 11# fh21_xuejinlian

非常感谢,想再咨询个问题,像下面这个文件这样的,我要把name是bbb的,但是大红框的部分提取出来,放到另一个文件,要怎么做呢?

无标题.png (29.12 KB, 下载次数: 3)

无标题.png

论坛徽章:
1
15-16赛季CBA联赛之江苏
日期:2016-10-26 16:19:04
13 [报告]
发表于 2016-09-27 13:46 |只看该作者
回复 12# ylypt123

awk '$1~/<Service/&&$2~/name="bbb"/,/\/Service/{print $0}'  file

论坛徽章:
1
15-16赛季CBA联赛之广东
日期:2016-07-18 17:38:18
14 [报告]
发表于 2016-09-27 14:00 |只看该作者
回复 13# fh21_xuejinlian

大神,请问这是awk的什么用法啊?我只会用awk -F这种用法,这里边这么多斜杠什么的是什么呀~~

论坛徽章:
1
15-16赛季CBA联赛之江苏
日期:2016-10-26 16:19:04
15 [报告]
发表于 2016-09-27 14:39 |只看该作者
回复 14# ylypt123

这个就是普通的awk用法,用来匹配字段的,开始匹配<Service 开头,然后匹配 name="bbb",然后最后的是到/Service,结尾的进行输出\/Serivce,表示对/这个符号进行转义处理。

论坛徽章:
1
15-16赛季CBA联赛之广东
日期:2016-07-18 17:38:18
16 [报告]
发表于 2016-09-27 14:56 |只看该作者
回复 15# fh21_xuejinlian
假如name="bbb"中的bbb是个变量赋值的,比如str=bbb的话那么name="\"$str\""再用这个awk '$1~/<Service/&&$2~/name="\"$str\""/,/\/Service/{print $0}'  file
这样就不行了,识别不了字符串……

论坛徽章:
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
17 [报告]
发表于 2016-09-27 15:31 |只看该作者
  1. perl -nle 'print if(/<Service name="bbb"/ .. /<\/Service>/)' urxml.xml
复制代码

论坛徽章:
1
15-16赛季CBA联赛之广东
日期:2016-07-18 17:38:18
18 [报告]
发表于 2016-09-27 15:38 |只看该作者
回复 15# fh21_xuejinlian

回复 15# fh21_xuejinlian
假如name="bbb"中的bbb是个变量赋值的,比如str=bbb的话那么name="\"$str\""再用这个awk '$1~/<Service/&&$2~/name="\"$str\""/,/\/Service/{print $0}'  file
这样就不行了,识别不了字符串……

这个我知道啦啦啦啦……一门语言果然还是要多研究,我还是太弱了……
其实我是为了做这个事情 http://bbs.chinaunix.net/thread-4254282-1-1.html
但是没有人回我,所以只能用最笨的办法,找出所有service name ,然后循环加循环找不同,再拼接文件,代码写的非常糟糕,但是没办法,只能这样了,不过还是感谢大神今天的解答,对我非常有帮助,非常感谢~~~~

论坛徽章:
1
15-16赛季CBA联赛之广东
日期:2016-07-18 17:38:18
19 [报告]
发表于 2016-09-27 15:38 |只看该作者
回复 15# fh21_xuejinlian

回复 15# fh21_xuejinlian
假如name="bbb"中的bbb是个变量赋值的,比如str=bbb的话那么name="\"$str\""再用这个awk '$1~/<Service/&&$2~/name="\"$str\""/,/\/Service/{print $0}'  file
这样就不行了,识别不了字符串……

这个我知道啦啦啦啦……一门语言果然还是要多研究,我还是太弱了……
其实我是为了做这个事情 http://bbs.chinaunix.net/thread-4254282-1-1.html
但是没有人回我,所以只能用最笨的办法,找出所有service name ,然后循环加循环找不同,再拼接文件,代码写的非常糟糕,但是没办法,只能这样了,不过还是感谢大神今天的解答,对我非常有帮助,非常感谢~~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP