regex – 从一个文件搜索模式到另一个文件

regex – 从一个文件搜索模式到另一个文件,第1张

概述我的file1包含四列数字,每行有16位数字: 5150782703810496 7071783126930570 9776701040412294 44148902720616046426318539518073 5261792065926013 6303463168130122 83323143176200787506133106243886 2242241367012197 827598 我的file1包含四列数字,每行有16位数字:

5150782703810496 7071783126930570 9776701040412294 44148902720616046426318539518073 5261792065926013 6303463168130122 83323143176200787506133106243886 2242241367012197 8275982207923757 72639316238138068882831187329643 3184441663826305 1416431572523093 0697142167966828

在file2中,我有16个搜索模式(在这里偶然排序),file1中的每个数字一个:

0412294062438118732964157252178312693052381380624224136701332314338104944148902720616044166382630559260136682868130822079238539518073

现在我正在寻找一种解决方案,从file1中的file2查找每个模式的行和列. file3中的所需结果:

1,1=3810491,2=178312693051,3=04122941,4=4414890272061602,1=85395180732,2=59260132,3=681302,4=33231433,1=0624383,2=242241367013,3=822079233,4=238138064,1=1187329644,2=4416638263054,3=1572524,4=66828

我用grep -f file2 file1尝试了它,发现了行但没有列.我在windows上,更喜欢awk,grep或sed,不幸的是不能使用Perl和Bash.怎么做到这一点?谢谢!

解决方法 一个 awk解决方案.

script.awk的内容:

FNR == NR {    patterns[  ] = 1     next}{    for ( i = 1; i <= NF; i++ ) {         for ( p in patterns ) {             if ( index( $i,p ) > 0 ) {                 printf "%d,%d=%s\n",FNR,i,p                delete patterns[ p ]                 break            }           }       }   }

运行它像:

awk -f script.awk file2 file1

产量:

1,4=66828
总结

以上是内存溢出为你收集整理的regex – 从一个文件搜索模式到另一个文件全部内容,希望文章能够帮你解决regex – 从一个文件搜索模式到另一个文件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1021463.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存