1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
#!/bin/sh
#
# unpick a /proc file in the style of /proc/net/netstat
#
if [ ! -f "$1" ]
then
echo "Usage: $0 proc-stat-file"
exit 1
fi
tmp=${TMPDIR:-/tmp}/show-proc-file-$$
trap "rm -f $tmp.*; exit 0" 0 1 2 3 15
awk <"$1" '{print $1}' \
| sort \
| uniq -c \
| while read cnt tag
do
if [ "$cnt" != 2 ]
then
echo "tag $tag appears $cnt times, not 2 as expected, skip this one"
continue
fi
grep "^$tag " <$1 \
| awk '
BEGIN { state = 0 }
state == 0 { # header line
for (i = 2; i <= NF; i++) fld[i] = $i
state++
next
}
state == 1 { # data line
for (i = 2; i <= NF; i++) print $1 fld[i],$i
state++
next
}' \
| tr '[A-Z]' '[a-z]' \
| sed -e 's/:/./' -e 's/ / /'
done
|