将syslog文件转换为csv



$cat syslog* | grep -a "CRON" | grep "CMD"

Jun 24 22:17:01 ubuntu1804-template CRON[7772]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)  
Jun 24 23:17:01 ubuntu1804-template CRON[7779]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)  
2021-06-24T10:05:01.590200-07:00 ubuntu1804-template CRON[7772]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)  
2021-06-25T10:05:01.590200-07:00 ubuntu1804-template CRON[7772]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)  

我想将其转换为具有三列的csv文件。正在从variable中提取Hostname
预期输出:

Date                                 Hostname             Message  
Jun 24 22:17:01                      $variable                     CMD (   cd / && run-parts --report /etc/cron.hourly)  
Jun 24 23:17:01                      $variable                     CMD (   cd / && run-parts --report /etc/cron.hourly)  
2021-06-24T10:05:01.590200-07:00     $variable                     CMD (   cd / && run-parts --report /etc/cron.hourly)  
2021-06-25T10:05:01.590200-07:00     $variable                     CMD (   cd / && run-parts --report /etc/cron.hourly)  

我正在尝试使用awk,但日期格式破坏了的输出

试试这个:

# set in you need
variable='ubuntu1804-template'
cat syslog* | grep -a "CRON" | grep "CMD" | awk -F"$variable" -vhostname="$variable" 'BEGIN {printf("%-40s %-30s %sn", "Date","Hostname","Message")} {split($NF, rstArr, "CMD"); printf("%-40s %-30s %sn", $1, hostname, "CMD"rstArr[2])}'

您可以通过printf("%-40s %-30s %sn", $1..)格式化输出,此%-40s %-30s %sn将定义行格式。

相关内容

  • 没有找到相关文章

最新更新