【发布时间】:2019-06-03 22:00:59
【问题描述】:
我有两个列表,其中一个包含通配符(在本例中由 * 表示)。我想比较这两个列表并创建一个匹配的输出,每个通配符 * 代表一个字符。
例如:
文件 1
123456|Jane|Johnson|Pharmacist|janejohnson@gmail.com
09876579|Frank|Roberts|Butcher|frankie1@hotmail.com
092362936|Joe|Jordan|Joiner|joe@joesjoinery.com
928|Bob|Horton|Farmer|bhorton@farmernews.co.uk
文件 2
1***6|Jane|Johnson|Pharmacist|janejohnson@gmail.com
09876579|Frank|Roberts|Butcher|f**1@hotmail.com
092362936|Joe|Jordan|J*****|joe@joesjoinery.com
928|Bob|Horton|Farmer|b*****n@f*********.co.uk
输出
092362936|Joe|Jordan|Joiner|joe@joesjoinery.com
928|Bob|Horton|Farmer|bhorton@farmernews.co.uk
解释
前两行不被视为匹配,因为 *s 的数量不等于第一个文件中显示的字符数。后两者是,所以它们被添加到输出中。
我试图找出在 AWK 中执行此操作并使用 Join 的方法,但我什至不知道有什么方法可以开始尝试实现这一目标。任何帮助将不胜感激。
【问题讨论】:
-
在文件 2 上,
*的列可以出现在任何列中还是只出现在最后两列中? -
这只是一个例子,但在我正在使用的文件中,它只会出现在最后一列。
-
您可以修改问题以仅反映最后一列吗?还添加您所做的任何努力
-
有必要根据列来追求吗?要求是整行匹配,而不是单列。