如何从本月创建的/ var / log输出或回显文件的行数,例如kern.log。我听说过使用cat,date,grep和wc,但我有点困惑。
任何答案都会有所帮助,但如果你能直接回答我,为什么不回答。
顺便说一下,用bash脚本(.sh)输出
[编辑] cat /var/log/kern.log | grep'[^]'| wc -l 好吧,这已经输出了那个kern.log的行数,但是如何将日期设置为获得12月份的行数?
答案 0 :(得分:1)
要获取本月编写的行的行号,您需要根据文件的输出格式。
我们可以想象这些线条看起来像这样:
Dec 23 22:15:14 ubunix kernel: [ 2320.727997] 8139too 0000:01:04.0: eth0: link down
然后你只需要做一些事情:
cat /var/log/kern.log | grep -E "^$(date +%b)" | wc -l
date +%b
输出当月的缩减(Dec
)。
但是,这只适用于像我的例子那样形成的行。您需要根据实际输出格式调整grep
模式。阅读date
后,您可能会找出正确的man date
参数。
答案 1 :(得分:1)
/var/log/kern.log
中的日期格式现在仍然知道,但如果它以Dec 5
之类的内容开头,那么您可以使用这个简单的grep -c
来计算今天的行:< / p>
> grep -c "^$(date '+%b ')" /var/log/kern.log
912
答案 2 :(得分:1)
假设您使用logrotate之类的工具轮换日志,您可以跳过检查每一行的日期,只需检查日志文件本身的ctime。例如,如果您每天午夜轮换日志,则可以使用GNU查找和GNU日期查找当月的文件。最棘手的部分是您需要以与未压缩日志不同的方式处理压缩日志。在下面的代码中,这是通过Bash case语句完成的。
# Find current month with GNU Date
current_month="$(date -d `date +%Y-%m`-01)"
# Find files from current month.
for file in $(find /var/log -type f -newerct "$current_month"); do
echo -n "${file}: "
case "$file" in
*gz) zcat "$file" | wc -l ;;
*) wc -l < "$file" ;;
esac
done
答案 3 :(得分:0)
wc -l /var/log/<FileName>
按照devnull的建议调查男人wc。我系统的输出如下。
parthiban@ubuntu:~$ wc /var/log/kern.log
5997 80017 580232 /var/log/kern.log
parthiban@ubuntu:~$ wc -l /var/log/kern.log
5997 /var/log/kern.log