我需要循环遍历文件的 n
行,并对于任何 i(1≤i≤n-1)
,获取差值为 line(n-1) - line(n)
。
以下是源文件:
root@syncro:/var/www# cat cron.log | grep "/dev/vda"
/dev/vda 20418M 14799M 4595M 77% /
/dev/vda 20418M 14822M 4572M 77% /
/dev/vda 20418M 14846M 4548M 77% /
/dev/vda 20418M 14867M 4527M 77% /
/dev/vda 20418M 14888M 4506M 77% /
/dev/vda 20418M 14910M 4484M 77% /
/dev/vda 20418M 14935M 4459M 78% /
/dev/vda 20418M 14953M 4441M 78% /
/dev/vda 20418M 14974M 4420M 78% /
/dev/vda 20418M 15017M 4377M 78% /
/dev/vda 20418M 15038M 4356M 78% /
root@syncro:/var/www# cat cron.log | grep "/dev/vda" | cut -b 36-42 | tr -d " M"
4595
4572
4548
4527
4506
4484
4459
4441
4420
4377
4356
那些 /dev/vda...
行会在 cron.log
文件中每小时记录一次,使用命令 df -BM
,而行之间的差异将揭示出每小时的磁盘消耗。
因此,预期输出结果为:
23 (4595 - 4572)
24 (4572 - 4548)
...
43 (4420 - 4377)
21 (4377 - 4356)
我不需要(
和)
之间的文本,我只是为了解释而放在这里。
awk '/^\/dev\/vda/ ....' OriginalLogFile
,而无需先使用 grep。 - Mark Setchell