regex – 从一个文件搜索模式到另一个文件
发布时间:2020-12-13 23:56:22 所属栏目:Linux 来源:网络整理
导读:我的file1包含四列数字,每行有16位数字: 5150782703810496 7071783126930570 9776701040412294 44148902720616046426318539518073 5261792065926013 6303463168130122 83323143176200787506133106243886 2242241367012197 8275982207923757 726393162381380
我的file1包含四列数字,每行有16位数字:
5150782703810496 7071783126930570 9776701040412294 4414890272061604 6426318539518073 5261792065926013 6303463168130122 8332314317620078 7506133106243886 2242241367012197 8275982207923757 7263931623813806 8882831187329643 3184441663826305 1416431572523093 0697142167966828 在file2中,我有16个搜索模式(在这里偶然排序),file1中的每个数字一个: 0412294 062438 118732964 157252 17831269305 23813806 24224136701 3323143 381049 441489027206160 441663826305 5926013 66828 68130 82207923 8539518073 现在我正在寻找一种解决方案,从file1中的file2查找每个模式的行和列. file3中的所需结果: 1,1=381049 1,2=17831269305 1,3=0412294 1,4=441489027206160 2,1=8539518073 2,2=5926013 2,3=68130 2,4=3323143 3,1=062438 3,2=24224136701 3,3=82207923 3,4=23813806 4,1=118732964 4,2=441663826305 4,3=157252 4,4=66828 我用grep -f file2 file1尝试了它,发现了行但没有列.我在Windows上,更喜欢awk,grep或sed,不幸的是不能使用Perl和Bash.怎么做到这一点?谢谢! 解决方法
一个
awk解决方案.
script.awk的内容: FNR == NR { patterns[ $1 ] = 1 next } { for ( i = 1; i <= NF; i++ ) { for ( p in patterns ) { if ( index( $i,p ) > 0 ) { printf "%d,%d=%sn",FNR,i,p delete patterns[ p ] break } } } } 运行它像: awk -f script.awk file2 file1 产量: 1,4=66828 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |