我服务器上有统计数据量的文本 today_count.log ,内容如下:
file_numb: 3168; total_size: 105.801 GB;avg_size: 34.1983 MB
file_numb: 3154; total_size: 87.16 GB;avg_size: 28.298 MB
file_numb: 348; total_size: 140.047 GB;avg_size: 412.091 MB
file_numb: 306; total_size: 184.478 GB;avg_size: 617.339 MB
file_numb: 3168; total_size: 371.135 GB;avg_size: 119.963 MB
file_numb: 2427; total_size: 0.00790029 GB;avg_size: 0.00333329 MB
file_numb: 3146; total_size: 138.763 GB;avg_size: 45.1663 MB
我每天需要统计数据总量大小,即将上面文本里 total_size 后面的数字加起来得出总量,本来想用 awk 来实现,但是各种折腾还是没能成功,希望得到大神的指点,谢谢(本人非伸手党,折腾来折腾去实在没办法才来请教,不耻下问才会进步)
1
ri0day 2015-11-03 17:16:53 +08:00
MacBook-Pro:~ min$ cat 2.txt
file_numb: 3168; total_size: 105.801 GB;avg_size: 34.1983 MB file_numb: 3154; total_size: 87.16 GB;avg_size: 28.298 MB file_numb: 348; total_size: 140.047 GB;avg_size: 412.091 MB file_numb: 306; total_size: 184.478 GB;avg_size: 617.339 MB file_numb: 3168; total_size: 371.135 GB;avg_size: 119.963 MB file_numb: 2427; total_size: 0.00790029 GB;avg_size: 0.00333329 MB file_numb: 3146; total_size: 138.763 GB;avg_size: 45.1663 MB MacBook-Pro:~ min$ awk '{sum+=$4} END {print "total = ", sum}' 2.txt total = 1027.39 |
2
joyeblue 2015-11-03 17:18:05 +08:00
awk -F ";" '{ gsub("total_size:","", $2); gsub("GB", "", $2); total+=$2} END { print total}' today_count.log
|
3
holyzhou 2015-11-03 17:25:29 +08:00
"不耻下问"?! 哈哈 语死早
|
6
Orzpls 2015-11-03 18:43:24 +08:00 via Android
不耻下问⊙_⊙
|
7
402124773 2015-11-03 21:30:03 +08:00
我对 awk 的语法不是特别熟悉,一般情况下,我都会:
for a in `awk -F '{print $4}' filename`;do sum=$(($sum+$a));done print "$a" 这个可以手打,不用记住 |
8
snopy OP @402124773 sum=$(($sum+$a))这个为什么是双括号呢? print "$a" 应该是 print "$sum"吧
|
10
lululau 2015-11-03 22:23:04 +08:00
在算数替换里面进行变量替换时,$ 符号可以省略,如:
a = 3 b = 2 echo $((a * b)) # => 输出 6 |
11
lululau 2015-11-03 22:23:32 +08:00
纠正。。。
a=3 b=2 echo $((a * b)) |
12
402124773 2015-11-03 22:54:29 +08:00
@lululau
多谢提醒, shell 脚本我没那么熟悉,平时只是用来做简单的数据处理,常用的命令也就是 for a in 循环, awk 打印和 sed 做替换以及一些简单的正则,呵呵 |
13
ScotGu 2015-11-03 23:09:50 +08:00
不耻下问_百度词典
不耻下问 [bù chǐ xià wèn] [解释] 乐于向学问或地位比自己低的人学习,而不觉得不好意思。 [出自] 《论语·公冶长》:“敏而好学,不耻下问。” 貌似有部分人认为 不以问简单的问题而感到羞耻。 还有部分人认为是 不以多次提问同样的问题而感到羞耻。 一次一个长辈在教导我的时候说,“你要不耻下问,遇到不会的问题就去问老师,不要不好意思”。 世界观崩塌~ |
14
xiamingchong 2015-11-04 09:43:43 +08:00
awk 'BEGIN{total=0} { total+=$4} END {print total}' log.log 就这么简单
|