繁体   English   中英

如何使用不同的选项组合多个 awk 命令

[英]how to combine multiple awk commands using different options

在使用不同选项加入以下 3 个 awk 命令时,我需要一些帮助。

  • awk -F/ 'BEGIN {print "SPK REPO"} {print $7," ",$9}' - 提取第 6 和第 8 个字段
  • awk -v RS=' ' 'BEGIN {print "log4j-version"} '/^1/''} - 提取第 13 个字段中的版本。
  • awk -F'[][]' 'BEGIN {print "Timestamp"} {print $2}' - 从第 13 个字段中提取日期时间戳。

输入文本文件格式:/hosting/cbj/shared/master/jobs/TAIS/jobs/tais_aem_build/branches/feature-Dev/builds/214/log:[2022-06-23T07:23:56.117Z] ch.qos。 logback.classic.log4j 0 1.2.3 com.baml.tais.tais_aem_build:jar:6.4.0

我需要提取第 6、8、13(日期时间戳)、第 13(1.2.3 版本)并将它们打印到带有标题的 csv 文件中。 样本输出:

SPK 回购协议 log4j 版本 时间戳
泰斯 tais_aem_build 1.2.3 2022-06-23T07:23:56.117Z

使用多个分隔符

awk -F'/|\\[|] ?| ' '
   BEGIN{
      OFS=";"
      print "SPK","REPO","log4j-version","Timestamp"
   }
   {
      print $7,$9,$18,$15
   }
 ' file

SPK;REPO;log4j-version;Timestamp
TAIS;tais_aem_build;1.2.3;2022-06-23T07:23:56.117Z

或将所有分隔符更改为/

awk -F/ '
   BEGIN{
      OFS=";"
      print "SPK","REPO","log4j-version","Timestamp"
  }
  {
     gsub(/[][ ]/, "/"); 
     gsub("//", "/"); 
     print $7,$9,$18,$15
  }
' file

SPK;REPO;log4j-version;Timestamp
TAIS;tais_aem_build;1.2.3;2022-06-23T07:23:56.117Z

或使用拆分

awk '
   BEGIN{
      OFS=";"
      print "SPK","REPO","log4j-version","Timestamp"
   }
   {
      n=split($1,a,"/")
      print a[7],a[9], $4, gensub(/.*\[(.*)\].*/,"\\1",1,a[n])
   }
 ' file

SPK;REPO;log4j-version;Timestamp
TAIS;tais_aem_build;1.2.3;2022-06-23T07:23:56.117Z

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM