免费注册 查看新帖 |

Chinaunix

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

[文本处理] 2个文件内容匹配 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-11-05 16:16 |只看该作者 |倒序浏览
请教一个shell
目的:2个文本a.txt b.txt
a.txt
hello
good
txt
go

b.txt
he is a good boy
i'm happy today
how are you.
go on

现在想统计出a.txt 中哪些单词没有在b.txt 中出现过. 请问如何写.

论坛徽章:
3
CU十二周年纪念徽章
日期:2013-10-24 15:41:34子鼠
日期:2013-12-14 14:57:19射手座
日期:2014-04-25 21:23:23
2 [报告]
发表于 2012-11-05 17:08 |只看该作者
本帖最后由 mcshell 于 2012-11-05 18:24 编辑

刚才看反了。。。
  1. perl -ne 'while(/([a-zA-Z'\'']+)/g){$hash{$1}++}END{open FA,"a.txt";while(<FA>){chomp;print "$_\n" if !exists $hash{$_} }}' b.txt
  2. hello
  3. txt
复制代码

论坛徽章:
0
3 [报告]
发表于 2012-11-05 17:31 |只看该作者
本帖最后由 vectorT 于 2012-11-05 17:43 编辑

#!/bin/bash
while read line
do
if [ ! "$line" ];then
continue
fi
grep "$line" b.txt >/dev/null 2>&1
if [ $? -ne 0 ];then
echo "the world: [$line] doesn't exist in b.txt "
fi
done <a.txt

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
4 [报告]
发表于 2012-11-05 17:41 |只看该作者
本帖最后由 yinyuemi 于 2012-11-05 17:42 编辑

如果不考虑标点符号的话
awk 'NR==FNR{for(i=1;i<=NF;i++)a[$i];next}! ($0 in a)' b.txt a.txt
如果考虑的话,把代表标点符号的RE填上,比如/[\.":;]/等
awk 'NR==FNR{gsub(/RE/,"",$0);for(i=1;i<=NF;i++)a[$i];next}! ($0 in a)' b.txt a.txt

论坛徽章:
0
5 [报告]
发表于 2012-11-05 17:44 |只看该作者
vectorT 发表于 2012-11-05 17:31
#!/bin/bash
while read line
do


可以但是效率太低

论坛徽章:
0
6 [报告]
发表于 2012-11-05 17:48 |只看该作者
yinyuemi 发表于 2012-11-05 17:41
如果不考虑标点符号的话
awk 'NR==FNR{for(i=1;i



精确匹配可以,现在还想模糊匹配 譬如: bond  匹配 james.bond

论坛徽章:
0
7 [报告]
发表于 2012-11-05 17:49 |只看该作者
回复 5# strong_sjhi


    的确 能尽量单条语句就单条语句,但是处理不谨慎的话,后果还是很严重的

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
8 [报告]
发表于 2012-11-05 17:52 |只看该作者
回复 6# strong_sjhi


    模糊匹配的原则再具体点,因为 bond 匹配 james.bond 是不是可以推测 me 匹配 name 呢?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
9 [报告]
发表于 2012-11-05 17:54 |只看该作者
awk 'NR==FNR{a=a"\n"$0} NR>FNR{s[$0]=$0} END {for(i in s) {if(a !~ s[i])print s[i]}}' b.txt a.txt

论坛徽章:
0
10 [报告]
发表于 2012-11-06 08:38 |只看该作者
yinyuemi 发表于 2012-11-05 17:52
回复 6# strong_sjhi


是的.是这个样的.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP