将数组中的数据与文件中的数据匹配?

将数组中的数据与文件中的数据匹配?

我正在尝试匹配数组中的数据,该数组列出了一周中的几天,如下所示:

MONDAY
TUESDAY
WEDNESDAY
THURSDAY
FRIDAY
SATURDAY
SUNDAY

文件数据如下所示:

Name1,Tuesday
Name2,Friday
Name3,Sunday
Name4,Wednesday
Name5,Thursday
Name6,Saturday

输出应该是:

MONDAY 
TUESDAY Name1
WEDNESDAY Name4
THURSDAY Name5
FRIDAY Name2
SATURDAY Name6
SUNDAY Name3

我可以用逗号将数据分成两部分。我想知道是否可以将文件中的数据与数组中的数据相匹配。

答案1

如果 file1 包含星期几,file2 包含日期和名称,则:

$ awk -F, 'FNR==NR{a[toupper($2)]=$1;next} {print $1,a[$1]}' file2 file1
MONDAY 
TUESDAY Name1
WEDNESDAY Name4
THURSDAY Name5
FRIDAY Name2
SATURDAY Name6

怎么运行的

  • -F,

    使用逗号作为字段分隔符。

  • FNR==NR{a[toupper($2)]=$1;next}

    当我们读取第一个命名文件 file2 时,向关联数组添加一个条目a,其中键为日期的大写版本,值作为名称。然后,跳过其余命令并跳转到该next行。

  • print $1,a[$1]

    如果我们到达这里,我们正在处理第二个文件。在这种情况下,打印我们从关联数组中检索到的日期和名称a

相关内容