Shell脚本从文件列表中提取数据并将其另存为csv

塔默巴克

我在使用CentOS。我有一个要读取的文件列表,从中提取数据并将其组织为csv文件。

日志文件的文本格式为:

...
{"name":"test-api","hostname":"ci47","pid":3202,"level":30,"msg":"File: dsiManager, Method: getContract, End { userId: 'AFC5EH5PIHHLO4XS7SG',\n  clientId: '5003700557',\n  intent: 'YesIntent',\n }","time":"2019-01-21T12:23:10.323Z","v":0}
...

输出格式必须为:

clientId;intent;time;userId
5003700557;YesIntent;2019-01-21T12:23:10.323Z;AFC5EH5PIHHLO4XS7SG

完成此任务的最简单方法是什么?(awk,grep ...)

塔默巴克

我用awk命令。我的问题是每一行都与其他行不同。我通过添加测试来找到要显示的正确行号来解决此问题。这是我的代码:

awk ' 
BEGIN {
  # Set awk script delimiter
  FS=","; 
  # Set CSV file separator
  OFS=";"; 
  # Set header part in csv file
  print "Method; UserId; ClientId; intent; time"
  } 
  /'clientId'/ 
  { 
    i=1; 
    msg=""; 
    while(i<=NF) { 
      if ($i ~ /clientId/) { 
        # Cleaning column value :
        gsub(/\\n\s{1,}clientId:\s/, "",$i); 
        msg = msg $i ";"
      };  
      if ($i ~ /"time"/) { 
        # Cleaning column value :
        gsub(/"time":/, "",$i); 
        msg = msg $i ";"
      }; 
      if ($i ~ /intent/) { 
        # Cleaning column value :
        gsub(/\\n\s{1,}intent:\s{1,}/, "",$i); 
        msg = msg $i ";"
      }; 
      if ($i ~ /Method/) { 
        # Cleaning column value :
        gsub(/(^(.*?)|\s{1,})Method\s{1,}?:?\s{1,}/, "",$i); 
        gsub (/(\s{1,}\{\s{1,}userId.*)?/, "", $i);  
        msg = msg $i ";"
      }; 
      if ($i ~ /userId/) { 
        # Cleaning column value :
        gsub(/(^(.*?)|\s{1,})userId:\s/, "",$i); 
        msg = msg $i ";"
      }; 
      i++
    } print msg
  } 
END {
  print NR
} ' 

$(grep -l id *.log) >> output.csv
  1. 我使用gsub()方法来清理somme列的值,因为我的日志文件很脏
  2. $(grep -l id * .log)命令用于列出所有awk输入日志文件

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从* .xlsm中提取工作表并将其另存为Python中的* .csv?

来自分类Dev

使用熊猫将数日长的数据框拆分为半小时的数据框,并将其另存为csv文件

来自分类Dev

在for循环中设置表并将其另存为csv

来自分类Dev

在for循环中设置表并将其另存为csv

来自分类Dev

如何使用OpenOffice打开Excel文件并将其另存为CSV

来自分类Dev

从HTML获取数据并将其另存为PHP变量

来自分类Dev

将 Word 文档中提取的内容另存为 CSV 文件

来自分类Dev

Python:读取csv文件并将列另存为变量

来自分类Dev

从文件中提取特定的图标层,然后将其另存为具有透明度的.ico文件

来自分类Dev

如何使用c ++提取视频帧并将其另存为图像

来自分类Dev

在文本文件中搜索“ OK”的第一次出现,并在同一行中提取前两个字符以将其另存为UFT / VB脚本中的变量

来自分类Dev

在文本文件中搜索“ OK”的第一个匹配项,并在同一行中提取前两个字符以将其另存为UFT / VB脚本中的变量

来自分类Dev

如何使用Excel VBA打开.csv并将其另存为.xlsx

来自分类Dev

Python:遍历 .csv 的 url 并将其另存为另一列

来自分类Dev

无法另存为CSV文件

来自分类Dev

运行打开文件并将其另存为值的宏的宏-运行时错误1004

来自分类Dev

JavaScript-从文件中读取URL并将其另存为数组中的元素

来自分类Dev

将边界框区域转换为遮罩并将其另存为PNG文件

来自分类Dev

获取日期并将其另存为文件名python

来自分类Dev

将水印添加到图像,并将其另存为图像而不是php文件

来自分类Dev

在Matlab中创建表并将其另存为.mat文件

来自分类Dev

复制工作表中的范围并将其粘贴并另存为新的用户指定文件

来自分类Dev

将准备好的布局转换为位图并将其另存为文件中的图像

来自分类Dev

OSX-使用Swift加载图像并将其另存为较小的png文件

来自分类Dev

如何将我的输出转换为 .JSON 并将其另存为 .json 文件

来自分类Dev

如何在 HIVE 中创建 DDL 并将其另存为目录中的文件

来自分类Dev

从TXT中提取2个列 插入逗号分隔符;另存为CSV

来自分类Dev

Python代码问题 - 试图创建一个定位文件的脚本,编辑它并将其另存为新文件

来自分类Dev

在 R 数据框中提取以 @ 开头的单词并另存为新列

Related 相关文章

  1. 1

    如何从* .xlsm中提取工作表并将其另存为Python中的* .csv?

  2. 2

    使用熊猫将数日长的数据框拆分为半小时的数据框,并将其另存为csv文件

  3. 3

    在for循环中设置表并将其另存为csv

  4. 4

    在for循环中设置表并将其另存为csv

  5. 5

    如何使用OpenOffice打开Excel文件并将其另存为CSV

  6. 6

    从HTML获取数据并将其另存为PHP变量

  7. 7

    将 Word 文档中提取的内容另存为 CSV 文件

  8. 8

    Python:读取csv文件并将列另存为变量

  9. 9

    从文件中提取特定的图标层,然后将其另存为具有透明度的.ico文件

  10. 10

    如何使用c ++提取视频帧并将其另存为图像

  11. 11

    在文本文件中搜索“ OK”的第一次出现,并在同一行中提取前两个字符以将其另存为UFT / VB脚本中的变量

  12. 12

    在文本文件中搜索“ OK”的第一个匹配项,并在同一行中提取前两个字符以将其另存为UFT / VB脚本中的变量

  13. 13

    如何使用Excel VBA打开.csv并将其另存为.xlsx

  14. 14

    Python:遍历 .csv 的 url 并将其另存为另一列

  15. 15

    无法另存为CSV文件

  16. 16

    运行打开文件并将其另存为值的宏的宏-运行时错误1004

  17. 17

    JavaScript-从文件中读取URL并将其另存为数组中的元素

  18. 18

    将边界框区域转换为遮罩并将其另存为PNG文件

  19. 19

    获取日期并将其另存为文件名python

  20. 20

    将水印添加到图像,并将其另存为图像而不是php文件

  21. 21

    在Matlab中创建表并将其另存为.mat文件

  22. 22

    复制工作表中的范围并将其粘贴并另存为新的用户指定文件

  23. 23

    将准备好的布局转换为位图并将其另存为文件中的图像

  24. 24

    OSX-使用Swift加载图像并将其另存为较小的png文件

  25. 25

    如何将我的输出转换为 .JSON 并将其另存为 .json 文件

  26. 26

    如何在 HIVE 中创建 DDL 并将其另存为目录中的文件

  27. 27

    从TXT中提取2个列 插入逗号分隔符;另存为CSV

  28. 28

    Python代码问题 - 试图创建一个定位文件的脚本,编辑它并将其另存为新文件

  29. 29

    在 R 数据框中提取以 @ 开头的单词并另存为新列

热门标签

归档