我是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字符串比较,但没有预期的结果。
非常感谢任何帮助。
答案 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