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

2023-12-01

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

月份可以用不同的方式表示,例如数字 (1, 2, …, 12),或三字母月份名称 (Jan, Feb, …, Dec)。 建议如何使用 awk 中的关联数组来转换 三个字母的月份名称到月份数字,反之亦然,到 将月份数字翻译为三个字母的月份名称。

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

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

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

我还有哪些其他选择?


内置的split函数是你的朋友,循环可以将 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]
    }
}

The BEGIN块显示了如何做到这一点。然后END块只是让你验证它。

我得到的输出(使用 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

注意通常的尴尬(嘿!沃克沃德尼斯)由于无法强制数组上的访问顺序而产生for loops.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 awk 在数字和数字之间转换月份 的相关文章

  • 如何将 CString 传递给格式字符串 %s?

    class MyString public MyString const std wstring s2 s s2 operator LPCWSTR const return s c str private std wstring s int
  • awk 返回两个变量

    现在这就是我正在做的事情 ret ls la awk print 3 9 usr echo ret awk print 1 fil echo ret awk print 2 问题是我没有运行ls我正在运行一个需要时间的命令 因此您可以理解其
  • 如何使用 bash 中提供的工具生成一系列非周末日期?

    我想生成一个文件列表 其中名称包含 filename date 例如file 20111101 file 20120703 开始November 1 2011直到今天 应该不包括周末 Thanks 2011年试试这个 for y in 20
  • obj[] 和 string[] 作为参数

    我在用Microsoft FSharp Reflection FSharpValue MakeUnion这需要一个Reflection UnionCaseInfo and an obj 可以为空 作为参数 但是 我得到了Type misma
  • awk 每个文件后换行

    使用此脚本 每个字段都会根据当前文件的最长单词打印出来 但需要每个文件都有一个换行符 如何才能实现这一目标 awk BEGIN ORS n FNR NR a i 0 if length 0 gt length max max 0 l len
  • AWK 错误:尝试在标量上下文中使用数组

    我正在学习AWK 这是一个简单的代码片段 我尝试将字符串拆分为数组并迭代它 BEGIN split a b c a for i 1 i lt length a i print a i 运行此代码时 我收到以下错误 awk awk txt 4
  • 使用 sed 替换复杂模式

    我想使用 sed 命令替换模式 要删除的图案如下所示 带有一个空格 var 0xaae8 x6A x6F x69 x6E x72 x65 x76 x65 x72 x73 x65 x73 x70 x6C x69 x74 x3E x74 x70
  • 使用 awk 从文件中提取特定行

    我有两个文件 一个文件是我的数据 另一个文件是我想从数据文件中提取的行号列表 我可以使用 awk 读取行文件 然后提取与行号匹配的行吗 例子 数据文件 This is the first line of my data This is th
  • 选择多个模式的 awk 代码

    这是我的输入文件 比如modified txt r4544 n479826 2012 08 28 07 12 33 0400 Tue 28 Aug 2012 1 line Changed paths M branches 8 6 0 con
  • 在linux中将包含word的行从一个文件复制到另一个文件

    我想复制包含某些单词的行file1 to file2 Suppose file1 ram 100 ct 50 gopal 200 bc 40 ravi 50 ct 40 krishna 200 ct 100 file2应该只有包含 ct 的
  • 关联数组与 SplObjectStorage

    我正在编写代码来管理一组独特的对象 该代码的第一个原型使用关联数组 基本上就像我一直这样做的方式一样 然而 我也热衷于利用 PHP 的更现代版本中添加的功能 例如 SplObjectStorage 1 这样做 部分是作为一种学习经验 部分是
  • awk 反转行和单词

    我对编程语言之类的东西很陌生 所以我必须用 awk 反转文件中的所有行以及这些行中的所有单词并将其打印出来 要反转的 File1 aa bb cc foo 做为 File1 的输出打印应该是这样的 就像 foo 一样 cc bb aa 我在
  • 如何在 Kotlin 中正确处理大于 127 的 Byte 值?

    假设我有一个带有变量的 Kotlin 程序b类型的Byte 外部系统向其中写入大于的值127 外部 意味着我无法更改它返回的值的类型 val a Int 128 val b Byte a toByte Both a toByte and b
  • 如何将二进制值列表转换为int32类型?

    我在 MATLAB 工作区中有一个小端格式的二进制数列表 我想将它们转换为 int32 a是由 0 和 1 组成的双向量 如下所示 a 0 0 0 1 1 0 0 1 1 1 1 0 1 0 1 0 0 0 0 1 1 0 0 0 1 1
  • 如何从 Unix 文件中删除空行

    我需要从输入文件中删除所有空白行并写入输出文件 这是我的数据如下 11216 33 1032747 64310 1 0 0 1 878 0 0 0 1 1 1 087 5 1 1 18 JAN 13 000603221321 11216 3
  • 如何使用 Bash 编写二进制文件?

    我的问题是我需要创建一个包含以下确切字节的文件 48 00 49 00 我不能使用C perl 其他脚本语言 目标是嵌入式设备 我使用 awk 尝试过 在桌面上它确实有效 awk BEGIN printf c c c c 48 00 49
  • php simpleXMLElement 到数组:空值

    我有以下 XML
  • 检查 bash 中是否存在关联数组元素

    在 bash 脚本中 我在变量中有一个区域设置 如下所示 locale fr ma 我也有一个像这样的关联数组 declare A new loc map new loc fr ma en ma new loc el gr en gr ne
  • awk 在循环中使用时不打印任何内容[重复]

    这个问题在这里已经有答案了 我有一堆使用 file 1 a 1 txt 格式的文件 如下所示 A 1 B 2 C 3 D 4 并使用以下命令添加包含每个文件名称的新列 awk print FILENAME NF t 0 file 1 a 1
  • 如何在 SQLite 中将时间戳转换为字符串?

    我有一个表 其中存储了时间戳 以毫秒为单位 我想将这些时间戳转换为人类可读的形式 这是我的表的输出示例 SELECT date raw strftime d m Y date 1000 as string FROM my table raw

随机推荐

  • 如何清除Flutter的Build缓存?

    flutter 的构建似乎有问题 我总是需要表现RUN gt 颤振全面重启每次我在模拟器或设备上运行应用程序时 否则 应用程序会加载一个脚手架主体 这是我两周前第一次开始编码时的代码 这是pastebin上的当前来源 children
  • 使用 < 重定向命令输入

    输入重定向适用于 exe 文件或内部 Windows 命令 app exe lt ListOfNames txt sort lt input txt 但是 当我尝试将其重定向到批处理脚本时 它不起作用 测试 bat echo off ech
  • 批处理文件运行时 cmd 中出现奇怪的输出

    我在批处理文件中有该脚本 cd C TESTS front tests call git pull cd C TEST front tests AutoApp bin debug start AutoApp exe And git pull
  • 使用rhandsontable R包生成的表时如何实现shinyStore?

    我正在尝试实现帖子中答案中的 保存 功能如何在 R Shiny 中使用 DT 的 localStorage 选项 进入我用 rhandsontable 渲染的表 但它不起作用 那篇文章涉及表包 DT 而我正在使用 rhandsontable
  • 如何用数学方法缩短网址

    我正在研究使用算法缩短 加密长度为 150 到 250 个字符到最多 12 个字符的 url 的可能性 最初我怀疑这是否可能 但我想利用 StackOverflow 的伟大思想 该算法应该是可以用经典的 asp sql c vb foxpr
  • 如何在android模拟器中运行特定的活动?

    我已经在 Eclipse 中创建了 4 个活动 现在我想在模拟器中分别一一运行活动 1 2 3 4 进行测试 谁能指导我如何运行所有这些 当我按下运行按钮时 它只运行第一个活动 任何帮助 将不胜感激 您可以尝试 startActivityF
  • 无法从 BASH 中的 WHILE 中获取变量的值

    我有一个代码 od An t x1 lt file while read line do for char in line do if needspace eq 0 then export hexs hexs printf 2s char
  • 如何移动放置在容器底部的最小化组件?

    我的容器中有三个组件 其中有按钮 当我点击最小化按钮时 组件会最小化到容器的底部 当我点击最小化组件时 它会最大化 假设三个组件位于底部 如果我最大化第二个组件 那么它就会最大化 而第三个最小化组件不会占据第二个组件的位置 并且这仍然是空间
  • 如何在 Code::blocks 中使用自定义项目模板

    在 MS Visual studio 中 我可以制作自己的项目 然后将其保存为自定义模板以供下次使用 有谁知道如何在代码块中做到这一点 一张图片胜过千言万语 https i stack imgur com BX5lM png
  • Raspberry pi 与 pygame.mixer 音频仅产生静态

    我对树莓派很陌生 而且很新 但我试图通过 pi B 上的 python 文件播放音频文件 我使用 omxplayer 从命令行播放音频 它工作正常 但是当我运行以下命令时它仅播放静态代码 from pygame import mixer m
  • 在Java中表示卡片的类?

    我正在用 Java 编写一个二十一点程序 并且开始为对象 Card 编写类声明 这足够了 还是有一些我应该掩盖的方法 public class Card public int suit Value 1 4 to represent suit
  • 如何使用锁定提示以便两个并行查询返回不相交的结果?

    我有一个 SQL 表Tasks有柱子Id and State 我需要执行以下操作 找到任何一项具有状态的任务ReadyForProcessing 检索其所有列并将其状态设置为Processing 类似于 伪代码 BEGIN TRANSACT
  • GCC LTO 是否执行跨文件死代码消除?

    说我有一个函数 void do something ifdef FEATURE X feature x endif 我可以毫无问题地编译和运行它 如果我想要这个功能我可以通过 D FEATURE X它有效 但是 如果我想把do someth
  • 长时间运行的线程如何在 Web 应用程序中工作

    所以我在 MVC 控制器方法内部有以下代码 public ActionResult ProcessFile ThreadStart threadStart new ThreadStart gt Doing some long process
  • 使用 dplyr mutate 根据列名向量创建新列

    我想获取一些列的日志 并创建全部命名为 log 原始列名称 的新列 下面的代码有效 但是我如何传递名为columnstolog变异 谢谢 library dplyr data mtcars columnstolog lt c mpg cyl
  • 适用于 Twitter API 的 Windows Phone SDK

    我想在 WindowsPhone7 上为 Twitter 开发一个示例应用程序 所以有人建议我是否有适用于 Windows Phone 的 SDK 可用 还有 OAuth API 实现的任何代码示例 谢谢 有一些关于构建 Twitter 应
  • 在 C 语言中 strcmp() 到底返回什么?

    我用 C 语言编写了这段代码 include
  • 使用 COALESCE 函数使值以逗号分隔

    我有一张桌子 EMP 我知道使用COALESCE函数我们可以通过这种方式获取任意列的值 23 23 45 34 SELECT OfferID FROM Emp where EmpID 23 但我没有得到实现此目的的语法 任何帮助都会很好地解
  • NPAPI 插件之上的 HTML

    在我使用 FireBreath 和 OpenGL 编写完浏览器插件并使用对象标签嵌入插件后 我尝试在插件之上覆盖各种 HTML 元素 不幸的是 无论我如何尝试 标签和插件图形始终位于页面上任何其他 HTML 元素的顶部 据我所知 flash
  • 使用 awk 在数字和数字之间转换月份

    在过去的考试试卷中 我有一个问题 月份可以用不同的方式表示 例如数字 1 2 12 或三字母月份名称 Jan Feb Dec 建议如何使用 awk 中的关联数组来转换 三个字母的月份名称到月份数字 反之亦然 到 将月份数字翻译为三个字母的月