$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
将定义行格式。