比较2个输入文件并重新排序

时间:2013-08-10 21:32:46

标签: string file-io awk

我是awk的新手。

我有2个名为file1和file2的输入文件。

file1的每个记录都有文字形式:X其中X是某个字符串。

file2的每个记录都有文字形式:abY,其中Y也是一些字符串,ab是一个可变的双字母前缀。

文件1中的记录数与文件2中的记录数相同。

Y的集合只是对X集合的重新排序。

我想要一个单行来比较file1(形式为X)的每一行与file2(形式为abY)的每一行,这样当X在abY中匹配Y时,打印abY到输出文件名为file3。

我几天来一直在努力解决这个问题。我尝试根据类似的堆栈问题修改许多单行程序,包括两个输入文件的awk字符串比较,但没有预期的结果。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

这是完成工作的一条线。我相信有更优雅的方法可以做到这一点......

awk 'NR==FNR{a[$0];next} {for (i in a) if (substr(i,3)==$0) {print i}}' file2 file1 > file3

答案 1 :(得分:0)

你可以试试这个:

awk 'FNR<NR {if(substr($0,3) in buf) print $0; next;} {buf[$0]=0}' file1 file2