高手帮忙写一个文件匹配的脚本[有难度]

莲花子 发布于 2013/08/04 22:58
阅读 734
收藏 1
如题: 把a文件的内容关键字 和b文件内容进行匹配, 打印匹配的内容和不匹配的内容(最好用python 和bash shell ).本人愚笨没有写出来.请大家帮忙啊.谢谢
A 文件                                         b 文件
爱你                                             我爱你
一万                                             一万年
年                                                年年有余
                                                    恋爱
                                                    匹配
结果文件如下

匹配成功:
======
我爱你
一万年
年年有余


未成功:
--------
恋爱
匹配
加载中
1
中山野鬼
中山野鬼

引用来自“inuxor”的答案

$ grep -Ff A B
我爱你
一万年
年年有余

$ grep -vFf A B
恋爱
匹配
哈。这个快。。。
0
中山野鬼
中山野鬼

哈,这个多项文本匹配的事情,真好今天在思考呢。你上面的东西,用c折腾分分钟的事情。今天一直在思考,是否有必要基于正则表达式之上做个文本全域的动态匹配,简单说,文本的所有内容,不会因为一个匹配项成立而丢弃。传统的正则扫瞄,匹配正确或不正确,已经分析的字符串会丢弃。

另一个再思考的过程,是否能动态触发新的匹配功能。就是如果某个单词出现,则启用新的匹配规则,当然还是在全文范围内。

0
中山野鬼
中山野鬼
另外楼主,你这个需要多个正则操作进行处理,因为可能存在冗余匹配。你写多个匹配工作,对每行依次匹配扫瞄,匹配成功就转新的一行,这样就可以了。
莲花子
莲花子
搞定了.谢谢..提醒..我不是程序员...嘿嘿..代码放出来帮我看看.谢谢
中山野鬼
中山野鬼
回复 @鏡花水月 : 不匹配的就丢弃。匹配完,不就是两个集合了嘛?一个是匹配成功的。另一个是不成功的。我晕。。。。“哈”不起来了。
莲花子
莲花子
很晕.找匹配的容易.把不匹配的把我难道了.
0
擅长被美女推倒
擅长被美女推倒
其实新手学编程,会陷入语言中,你应该把思路放到解决问题中,哪怕你在纸上列出解决问题的步骤,用汉字写都行,语言只是实现你解决问题的工具,关键是你脑子里有解决问题的思路,你这样问明显连思路都不清楚,还谈什么用某种语言描述!
莲花子
莲花子
我要是明白.就不会来请教了.
0
中山野鬼
中山野鬼

引用来自“擅长被美女推倒”的答案

其实新手学编程,会陷入语言中,你应该把思路放到解决问题中,哪怕你在纸上列出解决问题的步骤,用汉字写都行,语言只是实现你解决问题的工具,关键是你脑子里有解决问题的思路,你这样问明显连思路都不清楚,还谈什么用某种语言描述!
其实都是算法问题。而很多是不需要实现算法核心的策略问题。不过话又回来,这类问题不善于思考的人,平时工作中,应付各种突发事件,也很难放心让他们处理。会不会其实不重要,重要的是自己要有思路,哪怕是错的,怕就怕一遇到问题,就到处找套路。哈。
0
莲花子
莲花子

[root@localhost ~]# more one two
::::::::::::::
one
::::::::::::::
d
e
::::::::::::::
two
::::::::::::::
one
love
zzz
kkk




one=open("one",'rb').read()
two=open("two","rb").read()
m=[]
ok=[]
for i in one.split("\n"):
        if not i is "":
                for j in two.split("\n"):
                        if not j is "":
                                if  i in j:
                                        ok.append(j)
                                else:
                                        m.append(j)

print "ok...",
print ok
for i in ok:
        sum=-1
        for j in m:
                sum=sum+1
                if i == j:
                        m.pop(sum)


print "no..",

print list(set(m))



~                                                                                                                                                                      
[root@localhost ~]# python test.py
ok... ['one', 'love']
no.. ['zzz', 'kkk']


0
inuxor
inuxor
$ grep -Ff A B
我爱你
一万年
年年有余

$ grep -vFf A B
恋爱
匹配
0
莲花子
莲花子

引用来自“inuxor”的答案

$ grep -Ff A B
我爱你
一万年
年年有余

$ grep -vFf A B
恋爱
匹配
佩服了
返回顶部
顶部