AWK - 是否可以按不同字段&&按小时细分日志文件

2024-01-17

Question

我想知道是否可以awk独自闯入 一个日志文件,然后有awk输出一条不同的消息 小时细分 (00-23) 以及该特定时间的计数 小时与不同的消息。

Example

请求的输出

Message1
00 13
01 30
...
23 6

Message2
00 50
01 10
...
23 120
etc, etc

输入文件看起来有点像下面这样:

blah,blah
2016-06-24 00:30:54 blah Message1 7 rand rand2
2016-06-24 00:40:12 blah Message2 35 rand rand2
2016-06-24 00:42:15 blah Message2 12 rand rand2
2016-06-24 00:58:01 blah Message1 5 rand rand2
2016-06-24 00:58:12 blah Message2 3 rand rand2
2016-06-24 01:02:25 blah Message2 2 rand rand2
2016-06-24 01:02:30 blah Message1 3 rand rand2
2016-06-24 01:05:14 blah Message1 10 rand rand2
2016-06-24 01:30:56 blah Message2 5 rand rand2
2016-06-24 01:55:41 blah Message2 3 rand rand2
blah, blah

请注意,这是一个虚构的输入文件。

要获取此输入文件请求的输出,我知道我需要print $4然后在新线上做类似的事情print substr($2,1,2)" "sum[$5]。同样的时间同样的时间$4我必须添加$4在一起了。

Code

另请注意,我必须使用awk3.1.7 所以我不能做任何花哨的新东西awk 4.1.0+.

我知道如何获得不同的信息。

{
msg[$4]++
}
END {
  for (m in msg) {
     print m;
   }
}

要返回小时,我可以做以下事情:

{
msg[$4]++
hr[$4] = substr($2,1,2)
}
END {
  for (m in msg) {
     print m;
     print hr[m];
   }
}

最后,总和是这样的:

{
msg[$4]++
hr[$4] = substr($2,1,2)
sum[$4] += $5
}
END {
  for (m in msg) {
     print m;
     print hr[m]" "sum[m];     
   }
}

非常感谢任何和所有的帮助。


你会想要这样的东西:

$ cat tst.awk
BEGIN { FS="[ :]" }
{ sum[$6,$2]+=$7; msgs[$6]; hrs[$2] }
END {
    for (msg in msgs) {
        print msg
        for (hr in hrs) {
            print hr, sum[msg,hr]+0
        }
        print ""
    }
}

$ awk -f tst.awk file
Message1
00 12
01 13

Message2
00 50
01 10

但显然这有点猜测,因为它是针对您发布的示例输入运行的,但您没有提供相关的预期输出。

顺便说一句,问题主题行AWK - Is it possible...,假设它是关于操纵文本,那么该问题的答案始终是“是”,因此无需询问是否可能。

我刚刚注意到你之前的问题,你说时间可能并不总是出现在你的数据中,所以这可能是你真正想要的:

$ cat tst.awk
BEGIN { FS="[ :]" }
{ sum[$6,$2+0]+=$7; msgs[$6] }
END {
    for (msg in msgs) {
        print msg
        #for (hr=0; hr<=23; hr++) {
        for (hr=0; hr<=4; hr++) {
            printf "%02d %d\n", hr, sum[msg,hr]
        }
        print ""
    }
}
$
$ awk -f tst.awk file
Message1
00 12
01 13
02 0
03 0
04 0

Message2
00 50
01 10
02 0
03 0
04 0

显然将“4”更改为“23”。我还建议您考虑使用 CSV 输出,以便可以导入到 Excel 等,例如:

$ cat tst.awk
BEGIN { FS="[ :]"; OFS="," }
{ sum[$6,$2+0]+=$7; msgs[$6] }
END {
    printf "hr"
    for (msg in msgs) {
        printf "%s%s", OFS, msg
    }
    print ""
    for (hr=0; hr<=4; hr++) {
        printf "%02d", hr
        for (msg in msgs) {
            printf "%s%d", OFS, sum[msg,hr]
        }
        print ""
    }
}

$ awk -f tst.awk file
hr,Message1,Message2
00,12,50
01,13,10
02,0,0
03,0,0
04,0,0

$ awk -f tst.awk file | column -s, -t
hr  Message1  Message2
00  12        50
01  13        10
02  0         0
03  0         0
04  0         0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AWK - 是否可以按不同字段&&按小时细分日志文件 的相关文章

  • awk:多个CSV文件中多列数据的数学运算

    我正在开发 bash 脚本 该脚本循环多列数据填充并执行集成的 AWK 代码来操作多列数据 bin bash home PWD folder with the outputs rescore home rescore folder with
  • awk 求和多列

    如何计算所有单独列 115 列 的总和 输入 txt 1st 2nd 3rd 4th 5th Till 115thColumn 51 34 27 67 88 99 56 39 32 72 93 104 66 49 42 82 103 114
  • 使用 awk 计算行的平均值

    我一直在编写一个脚本 通过读取 txt 文件的输入来计算行的平均值 示例文本输入文件输入 txt 157361 155687 156158 156830 149610 151824 152353 152027 159195 158490 1
  • awk 有条件地组合多行

    我想将多行不同长度的值合并到一行 如果它们与 ID 匹配 输入示例是 ID Value a 1 49 a 2 75 b 1 120 b 2 150 b 3 211 c 1 289 d 1 301 d 2 322 所需的输出示例是 ID Va
  • 如何将文件的内容与列最后一个数字的增量连接起来

    我有一个包含一些内容的文件 需要重复第 n 次并添加最后一列号的增量 Input content of a file TCTA 7 ccta TCTA 1 TCTA 8 ccta TCTA 1 TCTA 9 ccta TCTA 1 TCTA
  • SED 或 AWK 将所有内容替换为另一个文件中的模式

    我正在尝试使用 SED 脚本进行模式替换 但它无法正常工作 样本内容 txt 288Y2RZDBPX1000000001dhana JP2F64EI1000000002d EU9V3IXI1000000003dfg1000000001dfd
  • 比较不同文件中的列并打印那些不匹配的列

    我有两个文件 file1 和 file2 我想将 file1 的几列 1 2 3 和 4 与 file2 的几列 1 2 3 和 4 进行比较 并打印 file2 中与 file1 中任何行都不匹配的那些行 E g file1 aaa bb
  • 将 CSV 文件拆分为较小的文件但保留标题?

    我有一个巨大的 CSV 文件 有 100 万行 我想知道是否有一种方法可以将此文件拆分为较小的文件 但保留所有文件的第一行 CSV 标题 它似乎split速度非常快 但也非常有限 您不能向文件名添加后缀 例如 csv split l1100
  • 使用 awk 添加列。这个 awk 命令有什么问题?

    我想将两列添加到大约 10 000 列的文件中 我想在每行插入 nr 22 作为第一列 然后我想要将原始第一列作为第二列 然后作为第三列我想要插入第 nr NR 行 之后我想要打印其余的原始列 我想我可以用下面的 awk 行来做到这一点 a
  • awk 计数频率

    嘿 我想统计 awk 中某一列的数据量 一个示例数据集是 2 5 8 1 3 7 8 5 9我想计算第二列中 5 的出现频率 这就是我尝试过的方法 但没有成功 total 0 for i 1 i lt NF i if i 2 if i 5
  • BASH - 随机排列文件中字符串中的字符

    我有一个文件 filename txt 具有以下结构 gt line1 ABC gt line2 DEF gt line3 GHI gt line4 JKL 我想打乱字符串中的字符not开始机智 gt 输出将 例如 如下所示 gt line
  • 如何在 awk 或 sed 中编写查找所有函数(使用正则表达式)

    我有运行 python 的 bash 函数 它从标准输入返回所有找到的正则表达式 function find all python c import re import sys print n join re findall 1 sys s
  • 创建带小数秒的时间戳

    awk可以使用 strftime 函数生成时间戳 例如 awk BEGIN print strftime Y m d H M S 2019 03 26 08 50 42 但我需要一个带有小数秒的时间戳 最好是纳秒 gnu date可以用 N
  • 将文本文件转换为逗号分隔的字符串

    我似乎没有找到与这个问题完全匹配的问题 我有一个文本文件 每行有一个文本标记 没有任何逗号 制表符或引号 我想根据文件内容创建一个逗号分隔的字符串 Input one two three Output one two three 我正在使用
  • 当存在多个字段分隔符时使用 AWK 忽略字段内的逗号

    我想像下面这样解析 CSV 记录awk or gawk 这些字段以逗号分隔 但最后一个字段 6 很特殊 因为它确实由子字段组成 这些子字段由 作为字段分隔符 或者 准确地说 分隔 这本身不是问题 我可以使用awk F 设置替代字段分隔符 但
  • 如何使用 awk 或 sed 将“[1.0 - 4.0]”等字符串替换为数值?

    我有一个 CSV 文件 正在通过一组 awk sed 命令进行管道传输 CSV 文件中的某些行如下所示 10368 Verizon DSL DSL NY NORTHEAST 5 4 1 1 3 0 0 384 0 768 其中第 8 列和第
  • 如何拆分一行并重新排列其元素?

    我在一行中有一些数据 如下所示 abc edf xyz rfg yeg udh 我想呈现如下数据 abc xyz yeg edf rfg udh 以便打印备用字段并用换行符分隔 有没有这样的衬里 下列awk脚本可以做到这一点 gt echo
  • Bash:循环遍历字符串数组后无法读出带空格的字符串

    我正在使用循环读取数组的内容 该数组包含名为 music 的目录层次结构中的所有目录和文件 内容是 find 命令先前输出的字符串 这个想法是根据流派 艺术家和标题将 directory contents 中每个数组元素的完整目录路径分成子
  • 如何让“grep -zoP”单独显示每个匹配项?

    我有一个此表格的文件 X this is the first match blabla X this is the second match and here we have some fluff 我想提取 X 之后和相同标记之间出现的所有
  • 对重复的名称添加双引号

    我想从文件中找到重复的名称 如下所示 并用 标记它们 file James Miki 123 456 7890 Wang Tai 234 563 6879 James Miki 123 456 7890 输出希望看起来像 James Mik

随机推荐

  • 如何使用宏获取 Word 文档的当前文件名(不带扩展名或完整路径)?

    我有代码可以提取文件的完整路径 减去扩展名 并且我正在尝试将其修改为仅存储文件名 再次不包含扩展名 Sub ShowFilename Dim pathName As String With ActiveDocument If Len Pat
  • 运行 .msi 安装程序后能否确定生成的命令行?

    如果我想要静默安装 是否有任何简单的方法来运行安装程序 选择所需的选项 然后确定等效安装所需的 msiexec 选项 开关 最好没有实际安装任何东西 不要点击 完成 或者您可以通过挖掘 MSI 数据库来找到所需的属性吗 是的 听起来您需要创
  • 如何保证VirtualAlloc分配的虚拟内存地址在2-4GB之间

    我尝试使用while 但是效果不是很好 有什么办法可以做到吗 bool found false uintptr t memaddr 0 int n 0 while found n lt 10 n 1 memaddr uintptr t Vi
  • 使用 AWS Glue ETL 将多个 parquet 文件合并到 AWS S3 中的单个 parquet 文件 python Spark (pyspark)

    我每 15 分钟运行一次 AWS Glue ETL 作业 每次在 S3 中生成 1 个 parquet 文件 我需要创建另一个作业以在每小时结束时运行 以使用 AWS Glue ETL pyspark 代码将 S3 中的所有 4 个 par
  • COM 与 .NET 6 互操作

    我们有一个用 C 编写的 NET 类库 我们正在尝试将其从 NET Framework v2 0 升级到 NET 6 在 NET 2 0 中 该库通过导入该库的 TLB 的 C 代码进行实例化 使用 为了使用 COM 使用 NET 6 库
  • HTML:更改

    的高度

    如何指定插入空行的高度 p 创造 在您的样式表或样式表部分中 定义以下内容 示例 p margin top 0 6em margin bottom 0em 您也可以在单独的标签中指定它 p p style margin top p
  • 由于“Binder 线程池”,应用程序未在模拟器上运行

    我正在尝试在模拟器上打开应用程序 但无法 在 Logcat 上我得到了这个 10 07 00 23 49 443 1268 1268 E hwservicemanager BINDER SET INHERIT FIFO PRIO faile
  • 如何将这个十六进制字符串转换为长字符串?

    我有 0xE94C827CEB 十六进制但作为字符串 即 1002011000043 dd mm yyyy HH mm ss 不幸的是 如果我只有字符串格式 我不知道如何进行转换 并且我没有 Convert ToLong 0xE94C827
  • usemin revved 文件名和 requirejs 依赖项

    我在 requirejs 和 usemin 中遇到以下问题 我想设置一个多页面应用程序 在其中动态加载仅包含页面特定功能的模块 例如 about gt about js home gt home js 我可以继续将所有内容打包在一个文件中
  • 带有名为“PropertiesController”的控制器的 ASP.NET MVC 路由[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我在尝试使用名称为 PropertiesController 的控制器 以及随后的路由 时遇到了一个棘手的问题 请耐心等
  • 如何从命令行运行 R 脚本文件

    我知道关于这个问题有很多问题 但我已经尝试了一切 我想我只是不明白命令行在 Windows 中是如何工作的 我的桌面上的文件夹中保存了一个文件 比方说 C Users abika 000 Desktop R models myfile R
  • urwid - 无限循环的输出屏幕

    我正在尝试制作一个简单的 urwid 作为无限循环的输出屏幕 它需要输出来自另一个类的数据 我现在找到的解决方案是 有一个 Printer 类 实际输出类的测试替换器 和queue属性 当需要显示某些内容时 会将其附加到queue 然后 有
  • 删除索引后是否应该重新编译表?

    我正在删除一些未使用的索引 我通常做的是 确保统计信息已更新 也许索引尚未使用 因为统计信息已经有一段时间没有更新了 为每个涉及的索引生成删除索引脚本和创建索引脚本 运行删除索引命令 update statistics tablename
  • Python VS Code 导入不起作用“无模块名称请求”

    我是 python 新手 刚学了 6 个月的 c 也是 VS Code 来自 VS 的新手 我的错误是 gt 发生异常 ModuleNotFoundError 没有名为 requests 的模块 文件 C Users ryanb Docum
  • Swift 中的 AES128 加密

    我对 AES 128 加密有疑问 iOS 中的加密字符串与 Android 中的加密字符串不同 下面是安卓代码 public class Encryption private static final String ALGORITHM AE
  • CardLayout 显示下一个面板 - java Swing

    我在使用 CardLayout 时遇到一些问题 我有一个面板和一个 下一步 按钮 单击它后我想显示第二个面板 在我的代码中 当我单击 下一步 按钮时 不会显示下一个面板 有人可以帮我解决这个问题吗 package com test impo
  • 如何删除文件中除第一个匹配行之外的重复行

    在下面的配置文件中 etc fine tune conf 我们有重复的行 clean history in os true 我们要删除所有包含以下内容的行clean history in os true除了文件中的第一个匹配行 到目前为止我
  • Firebase 令牌过期和处理刷新令牌的最佳实践

    我目前正在客户端应用程序 基于 Cordova 的移动应用程序 上使用 Firebase 并使用客户端上的 firebase 用户身份验证方法 使用电子邮件和密码登录 FacebookAuthProvider 根据我目前对会议到期的理解和经
  • MSBuild 使用 ItemGroup 和 EXEC 命令

    我创建了代码片段中显示的 ItemGroup 我需要迭代此 ItemGroup 并运行 EXEC 命令 也在代码片段中显示 我似乎无法让它发挥作用 代码返回如下所示的错误 注意 消息被写入 2 次 这是正确的 但 EXEC 命令未正确运行
  • AWK - 是否可以按不同字段&&按小时细分日志文件

    Question 我想知道是否可以awk独自闯入 一个日志文件 然后有awk输出一条不同的消息 小时细分 00 23 以及该特定时间的计数 小时与不同的消息 Example 请求的输出 Message1 00 13 01 30 23 6 M