忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT HPC论坛 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 418 | 回复: 5

[文本处理] linux怎么不完全匹配字符串 [复制链接]

论坛徽章:
0
发表于 2017-11-09 22:43 |显示全部楼层
例如有文件a:

AAAAA    1
AAAAA    2
AAABB    3
BCHJJK   4
HDJAK    5

怎么找出与AAABC最多有2个字符不匹配的行,输出文件b:
AAAAA   1
AAAAA   2
AAABB   3

非常感谢!
打赏鼓励一下!

论坛徽章:
120
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07巳蛇
日期:2014-05-09 16:43:18巨蟹座
日期:2014-10-23 17:48:38子鼠
日期: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
发表于 2017-11-09 23:33 |显示全部楼层
回复 1# jin978347005

What You Think Is What You Code(WYTIWYC)

怎么找出与AAABC最多有2个字符不匹配的行


$ awk -vk=AAABC -vd=2 'function g(s,n){return(substr(s,n,1))}function len(str){return(length(str))}function chk(s,k,d,c){sn=len(s);kn=len(k);if(sn!=kn)next;for(n=1;n<=kn;++n)if(g(s,n)!=g(k,n))if(++c>d)next;print}{chk($1,k,d)}' FILE
AAAAA    1
AAAAA    2
AAABB    3

$ cat FILE
AAAAA    1
AAAAA    2
AAABB    3
BCHJJK   4
HDJAK    5

论坛徽章:
0
发表于 2017-11-10 11:36 |显示全部楼层
本帖最后由 本友会机友会摄友会 于 2017-11-10 11:39 编辑

这里面有个细节未明确:
是否完全按顺序匹配?aaabc和cccba

如果不按,就变成了集合取重问题。

ps去重,取重
http://bbs.chinaunix.net/thread-4260187-1-1.html

如果按,就变成了,字符串头比较,问题。
可以用match,或取子字符串,然后eq。


论坛徽章:
0
发表于 2017-11-14 19:32 |显示全部楼层
回复 2# jason680

非常感谢!

论坛徽章:
0
发表于 2017-11-14 19:33 |显示全部楼层
回复 3# 本友会机友会摄友会

按顺序匹配,非常感谢!

论坛徽章:
2
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之同曦
日期:2017-09-11 14:39:48
发表于 2017-11-15 10:59 |显示全部楼层
回复 1# jin978347005


  1. awk -vs="AAABC" -vn=2 '{a=length(s);for(i=1;i<=n+1;i++){b=substr(s,i,a-n);if($1~b){print>"b";next}}}' a
复制代码

cat b
AAAAA    1
AAAAA    2
AAABB    3
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP