gpt4 book ai didi

awk - 使用 awk 在数字和数字之间转换月份

转载 作者:行者123 更新时间:2023-12-01 09:31:59 25 4
gpt4 key购买 nike

在过去的考试论文中,我有一个问题:

Months can be represented in different ways, for example as numbers (1, 2, …, 12), or as three- letter month names (Jan, Feb, …, Dec). Suggest how associative arrays in awk can be used to translate from three-letter month names to month numbers, and vice versa, to translate month numbers to three-letter month names.

所以我想我会使用关联数组的格式,比如月份的输入是 $1:

number_to_month["Jan"] = 1;
print number_to_month[$1]

但对我来说,这似乎并没有很好地利用关联数组的力量,而且我必须在数组中手动​​初始化每个月。

我还有哪些其他选择?

最佳答案

内置的 split 函数是你的 friend ,循环可以将 name-from-number 版本复制到 number-from-name 中:

BEGIN {
split("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec",month)
for (i in month) {
month_nums[month[i]]=i
}
}
END {
for (i in month) {
print i "\t" month[i]
}
for (m in month_nums) {
print m "\t" month_nums[m]
}
}

BEGIN block 显示了如何执行此操作。然后 END block 只是让您验证它。

我得到的输出(使用 gawk 4.0.1)是:

4       Apr
5 May
6 Jun
7 Jul
8 Aug
9 Sep
10 Oct
11 Nov
12 Dec
1 Jan
2 Feb
3 Mar
Feb 2
Sep 9
Jan 1
May 5
Apr 4
Oct 10
Dec 12
Nov 11
Jul 7
Mar 3
Aug 8
Jun 6

请注意通常的尴尬(嘿!AWKwardness)由于无法强制数组 for 循环的访问顺序。

关于awk - 使用 awk 在数字和数字之间转换月份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14342108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com