我正在尝试匹配数组中的数据,该数组列出了一周中的几天,如下所示:
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
。