日志文件abc.log
PID:6543 ……
…………………
PID:4325 ……
……………………
PID:6543 ……
日志文件xyz.log
PID:8888 ……
…………………
PID:9992 ……
……………………
PID:6543 ……
注意:PID编号可以在文件中重复。并且一个PID号码可以出现在多个日志文件中。
今天在一次采访中询问了这个问题,我必须返回每个PID编号和今天记录的每个PID编号的输出。 这是我写的脚本。你能否确认一下是否有效。面试官没有说我的答案是否正确。有人可以帮我查一下。他们希望我打印每个唯一的PID:数字及其计数,标签空间如PID:5674 10
- 如果今天和前一天的日志文件在同一个文件夹中
#!/bin/ksh
cd /A/B/
for a in `ls -lrt | grep "Mar 24" | awk '{print $9}'`; — list of files generated today
do
grep "^PID:" $a | cut -d " " f1 >> /tmp/abc.log — saving first column which look like PID:23456
done
for b in `cat /tmp/abc.log | sort -u`;
do
x=grep $b /tmp/abc.log | grep -v grep | wc;
echo $b" "$x — will print like PID:23456 56(count)
done
#!/bin/ksh
— If today’s log files are in different folder
cd /A/B/
for a in `ls /A/B/*.log`
do
grep "^PID:" $a | cut -d " " f1 >> /tmp/abc.log
done
for b in `cat /tmp/abc.log | sort -u`;
do
x=grep $b /tmp/abc.log | grep -v grep | wc;
echo $b" "$x
done
答案 0 :(得分:0)
您可以使用awk
grep -h 'PID:' *.log > all_pids.log
#put only PID lines to a file.This can also be done
#with pattern in awk and multiple files. I'm just separating it for clarity
awk '
{ a[$1]++ } #increments by 1 for corresponding PID
END {
for (i in a) {
printf "%s %s\n", i, a[i];
}
}
' all_pids.log