String 比较2个输入文件并重新排序
我是awk的新手 我有两个名为file1和file2的输入文件 file1的每条记录都具有文本形式:X,其中X是某个字符串 file2的每条记录都有文字形式:abY,其中Y也是一些字符串,ab是一个两个字母的变量前缀 文件1中的记录数与文件2中的记录数相同 Y的集合只是X集合的重新排序 我想用一行代码来比较文件1(形式为X)的每一行和文件2(形式为abY)的每一行,这样当X与abY中的Y匹配时,将abY打印到名为file3的输出文件 我已经为此挣扎了几天了。我尝试过根据类似的堆栈问题修改许多单行程序,这些问题涉及两个输入文件的awk字符串比较,但没有得到预期的结果 非常感谢您的帮助。您可以尝试以下方法:String 比较2个输入文件并重新排序,string,file-io,awk,String,File Io,Awk,我是awk的新手 我有两个名为file1和file2的输入文件 file1的每条记录都具有文本形式:X,其中X是某个字符串 file2的每条记录都有文字形式:abY,其中Y也是一些字符串,ab是一个两个字母的变量前缀 文件1中的记录数与文件2中的记录数相同 Y的集合只是X集合的重新排序 我想用一行代码来比较文件1(形式为X)的每一行和文件2(形式为abY)的每一行,这样当X与abY中的Y匹配时,将abY打印到名为file3的输出文件 我已经为此挣扎了几天了。我尝试过根据类似的堆栈问题修改许多单行
awk 'FNR<NR {if(substr($0,3) in buf) print $0; next;} {buf[$0]=0}' file1 file2
awk'FNR这里有一行代码可以完成这项工作。我相信有更优雅的方式来做到这一点
awk'NR==FNR{a[$0];next}{for(a中的i)if(substr(i,3)==0){print i}}file2 file1>file3
谢谢你的帮助,@SomeGuy。您的代码输出文件2的内容(即,它按照在文件2中找到的顺序打印字符串格式abY)-这也是我在挣扎之前所得到的。我尝试的是根据Y(文件1的X的匹配项)在文件1中出现的顺序输出字符串格式abY。