【发布时间】:2014-11-29 21:57:32
【问题描述】:
我正在尝试使用多个数组从文件中提取信息,然后将echo 该信息提取出来。
我的作业中的问题是:
• 使用 /var/log/messages 文件,要求用户输入服务名称(例如“syslogd”)并显示服务在特定日期重新启动的次数。
例如,如果服务在 2014 年 11 月 11 日重新启动 5 次,在 2014 年 11 月 12 日重新启动 3 次,您的输出应类似于以下内容:
11月10日syslogd服务重启5次,时间为:22:00:04
11月11日syslogd服务重启3次,时间为:22:00:04
我的代码是:
echo -n "Enter the name of the service you wish to log: "; read input
array1=($(grep $input /var/log/messages | awk '{print $1,$2}' | uniq -c | cut -d ' ' -f 4))
array2=$(grep $input /var/log/messages | awk '{print $1,$2}' | uniq | tr -d " ")
for element in "${array1[@]}"
do
for elementTwo in "${array2[@]}"
do
echo "The "$input" service restarted "$element" times on"$elementTwo" "
done
done
我的输出是:
Enter the name of the service you wish to log: syslogd
The syslogd service restarted 2 times onOct30 Oct31 Nov1 Nov2 Nov3 Nov4 Nov5 Nov6 Nov7 Nov8 Nov9 Nov10 Nov11 Nov12 Nov13 Nov14 Nov15 Nov16 Nov17 Nov18 Nov19 Nov20 Nov21 Nov22 Nov23 Nov24 Nov25 Nov26 Nov27 Nov28 Nov29
The syslogd service restarted 2 times onOct30 Oct31 Nov1 Nov2 Nov3 Nov4 Nov5 Nov6 Nov7 Nov8 Nov9 Nov10 Nov11 Nov12 Nov13 Nov14 Nov15 Nov16 Nov17 Nov18 Nov19 Nov20 Nov21 Nov22 Nov23 Nov24 Nov25 Nov26 Nov27 Nov28 Nov29
The syslogd service restarted 3 times onOct30 Oct31 Nov1 Nov2 Nov3 Nov4 Nov5 Nov6 Nov7 Nov8 Nov9 Nov10 Nov11 Nov12 Nov13 Nov14 Nov15 Nov16 Nov17 Nov18 Nov19 Nov20 Nov21 Nov22 Nov23 Nov24 Nov25 Nov26 Nov27 Nov28 Nov29
/var/log/messages 的输出:
Nov 28 08:00:05 opentech syslogd: restart
Nov 28 22:00:04 opentech syslogd: restart
Nov 29 04:00:05 opentech syslogd: restart
Nov 29 20:00:05 opentech syslogd: restart
Nov 29 22:00:07 opentech syslogd: restart
输出还有更多内容,但我认为您明白了!如您所见,它输出的是所有日期,而不是每行一个。我不知道如何解决这个问题。请帮忙!!!
【问题讨论】:
-
你能提供一些来自
/var/log/messages的示例行吗? -
11 月 28 日 08:00:05 opentech syslogd:重新启动 11 月 28 日 22:00:04 opentech syslogd:重新启动 11 月 29 日 04:00:05 opentech syslogd:重新启动 11 月 29 日 20:00:05 opentech syslogd : 重启 Nov 29 22:00:07 opentech syslogd: 重启
-
array2不是数组。 -
那么就可以了。有没有办法把它变成一个数组?
-
昨晚我在想我需要一个 for 循环,但我不知道如何将多个参数放入其中。我会修复 cut 命令。
标签: arrays linux bash shell unix