-1

我是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 字符串比较的类似堆栈问题修改许多单行代码,但没有预期的结果。

任何帮助将不胜感激。

4

2 回答 2

1

这是完成这项工作的一条线。我敢肯定有更优雅的方法来做到这一点......

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

于 2013-08-12T19:34:57.183 回答
0

你可以试试这个:

awk 'FNR<NR {if(substr($0,3) in buf) print $0; next;} {buf[$0]=0}' file1 file2
于 2013-08-11T00:38:53.860 回答