当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 15 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 怎样实现输出保留两位小数?
帖子发表于 : 2012-05-02 13:41 
头像

注册: 2008-08-13 8:48
帖子: 26391
地址: 东海硇州,一双管钥。
系统: Fundu i64
送出感谢: 50
接收感谢: 344
代码:
#! /bin/bash
nic=$1
netdev=/proc/net/dev
if [ $# != 1 ] ; then
   echo "Usage : $0 NIC"
   exit 1
fi
if [ -z "$(grep $nic: $netdev)" ];then
   echo "Invalid NIC"
   exit 1
fi
in_orig=$(grep $nic $netdev|sed "s/$nic://"|awk '{ print $1 }')
out_orig=$(grep $nic $netdev|sed "s/$nic://"|awk '{ print $9 }')
while true
do
   sleep 1
   in=$(grep $nic $netdev|sed "s/$nic://"|awk '{ print $1 }')
   out=$(grep $nic $netdev|sed "s/$nic://"|awk '{ print $9 }')
   in_diff=$(echo $in $in_orig|awk  '{printf "%5.2f", ($1-$2)/1024}')
   out_diff=$(echo $out $out_orig|awk  '{printf "%5.2f", ($1-$2)/1024}')
   in_total=$(echo $in|awk  '{printf "%6.2f", $1/1024/1024}')
   out_total=$(echo $out|awk  '{printf "%6.2f", $1/1024/1024}')
   echo "$nic:IN ${in_diff}K OUT ${out_diff}K TOTALIN ${in_total}M TOTALOUT ${out_total}M"
   in_orig=${in}
   out_orig=${out}
done

修改了一下,应该差不多了。


_________________
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 怎样实现输出保留两位小数?
帖子发表于 : 2012-05-02 15:14 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 274
bash当lisp写啊。这么多重()。

那些变量,只要运算,都是整数了吧。

估计只能在echo里面,写bc。echo "312.4/40"|bc -l。当然awk可以。

换perl最好。


_________________
● 鸣学


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 怎样实现输出保留两位小数?
帖子发表于 : 2012-05-02 15:18 

注册: 2010-07-19 21:41
帖子: 22323
系统: OS X
送出感谢: 8
接收感谢: 42
自带的当然没小数,我都直接*100 再加 . 的


_________________
NO DO NO DIE
http://a/%%30%30


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 怎样实现输出保留两位小数?
帖子发表于 : 2012-05-02 15:44 
头像

注册: 2005-03-28 0:00
帖子: 1034
地址: ☸我佛山人
系统: Gentoo x64
送出感谢: 2
接收感谢: 19
伟大的神啊,这种小菜鸟写出的东西乃就不要喷了吧。


_________________
Je ne suis pas d'accord avec ce que vous dites, mais je me battrai jusqu'à la mort pour que vous ayez le droit de le dire.


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 怎样实现输出保留两位小数?
帖子发表于 : 2012-05-02 16:35 
头像

注册: 2009-04-11 23:46
帖子: 4130
系统: Arch Linux
送出感谢: 11
接收感谢: 124
bash 不支持浮点数么?


_________________
我的博客 https://blog.lilydjwg.me/
提问的智慧
Arch Linux 中文论坛

我的vimrc: https://git.io/vimrc


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 怎样实现输出保留两位小数?
帖子发表于 : 2012-05-02 20:00 
头像

注册: 2008-08-13 8:48
帖子: 26391
地址: 东海硇州,一双管钥。
系统: Fundu i64
送出感谢: 50
接收感谢: 344
改了一下,总算实现了。 :em06 :em06 :em06


_________________
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 怎样实现输出保留两位小数?
帖子发表于 : 2012-05-02 20:04 

注册: 2010-07-19 21:41
帖子: 22323
系统: OS X
送出感谢: 8
接收感谢: 42
lss 用的 zsh?……


_________________
NO DO NO DIE
http://a/%%30%30


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 怎样实现输出保留两位小数?
帖子发表于 : 2012-05-02 20:30 
头像

注册: 2010-06-16 1:05
帖子: 14668
地址: Tencent
系统: Mac OS X
送出感谢: 1
接收感谢: 153
jtshs256 写道:
lss 用的 zsh?……

听说的是


_________________
twitter求fo:http://twitter.com/maplebeats
博客求踩:http://maplebeats.com


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 怎样实现输出保留两位小数?
帖子发表于 : 2012-05-02 20:36 
头像

注册: 2009-04-11 23:46
帖子: 4130
系统: Arch Linux
送出感谢: 11
接收感谢: 124
枫叶饭团 写道:
jtshs256 写道:
lss 用的 zsh?……

听说的是

嗯,支持浮点数的。我记得曾经看到哪个软件在某个版本增加了浮点数的支持,还以为是 bash 呢,现在想起是 Vim。


_________________
我的博客 https://blog.lilydjwg.me/
提问的智慧
Arch Linux 中文论坛

我的vimrc: https://git.io/vimrc


页首
 用户资料  
 
10 楼 
 文章标题 : Re: 怎样实现输出保留两位小数?
帖子发表于 : 2012-05-02 23:07 
头像

注册: 2008-08-13 8:48
帖子: 26391
地址: 东海硇州,一双管钥。
系统: Fundu i64
送出感谢: 50
接收感谢: 344
代码:
diff -u nicmonitor.orig nicmonitor
--- nicmonitor.orig   2012-05-02 19:49:26.253538669 +0800
+++ nicmonitor   2012-05-02 21:45:00.306720215 +0800
@@ -16,10 +16,10 @@
    sleep 1
    in=$(grep $nic $netdev|sed "s/$nic://"|awk '{ print $1 }')
    out=$(grep $nic $netdev|sed "s/$nic://"|awk '{ print $9 }')
-   in_diff=$(echo $in $in_orig|awk  '{printf "%5.2f", ($1-$2)/1024}')
-   out_diff=$(echo $out $out_orig|awk  '{printf "%5.2f", ($1-$2)/1024}')
-   in_total=$(echo $in|awk  '{printf "%6.2f", $1/1024/1024}')
-   out_total=$(echo $out|awk  '{printf "%6.2f", $1/1024/1024}')
+   in_diff=$(awk 'BEGIN{printf "%5.2f", '"$[in-in_orig]"'/1024}')
+   out_diff=$(awk 'BEGIN{printf "%5.2f", '"$[out-out_orig]"'/1024}')
+   in_total=$(awk 'BEGIN{printf "%6.2f", '"$in"'/1024/1024}')
+   out_total=$(awk 'BEGIN{printf "%6.2f", '"$out"'/1024/1024}')
    echo "$nic:IN ${in_diff}K OUT ${out_diff}K TOTALIN ${in_total}M TOTALOUT ${out_total}M"
    in_orig=${in}
    out_orig=${out}

无视脚本大婶,再修改一下。 :em09 :em09 :em09


_________________
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关


页首
 用户资料  
 
11 楼 
 文章标题 : Re: 怎样实现输出保留两位小数?
帖子发表于 : 2012-05-03 16:37 
头像

注册: 2008-03-23 0:39
帖子: 770
送出感谢: 0 次
接收感谢: 4
eexpress 写道:
bash当lisp写啊。这么多重()。

那些变量,只要运算,都是整数了吧。

估计只能在echo里面,写bc。echo "312.4/40"|bc -l。当然awk可以。

换perl最好。

哪里多了,好像一行才一对() :em05


页首
 用户资料  
 
12 楼 
 文章标题 : Re: 怎样实现输出保留两位小数?
帖子发表于 : 2012-05-04 13:33 
头像

注册: 2008-08-13 8:48
帖子: 26391
地址: 东海硇州,一双管钥。
系统: Fundu i64
送出感谢: 50
接收感谢: 344
代码:
diff -u nicmonitor.orig nicmonitor
--- nicmonitor.orig   2012-05-02 21:45:00.306720215 +0800
+++ nicmonitor   2012-05-04 13:24:34.221711182 +0800
@@ -20,7 +20,11 @@
    out_diff=$(awk 'BEGIN{printf "%5.2f", '"$[out-out_orig]"'/1024}')
    in_total=$(awk 'BEGIN{printf "%6.2f", '"$in"'/1024/1024}')
    out_total=$(awk 'BEGIN{printf "%6.2f", '"$out"'/1024/1024}')
-   echo "$nic:IN ${in_diff}K OUT ${out_diff}K TOTALIN ${in_total}M TOTALOUT ${out_total}M"
+#   echo "$nic:IN ${in_diff}K OUT ${out_diff}K TOTALIN ${in_total}M TOTALOUT ${out_total}M"
+   tput sc
+#   echo -n "$nic:IN ";tput setf 4;echo -n ${in_diff}K;tput sgr0;echo -n " OUT ";tput setf 4;echo -n ${out_diff}K;tput sgr0;echo -n " TOTALIN ";tput setf 4;echo -n ${in_total}M;tput sgr0;echo -n " TOTALOUT ";tput setf 4;echo -n ${out_total}M;tput sgr0
+   echo -n "$nic:IN ${in_diff}K OUT ${out_diff}K TOTALIN ${in_total}M TOTALOUT ${out_total}M"   
+   tput rc
    in_orig=${in}
    out_orig=${out}
 done

本来想加点很邪恶的东西进去的,但发现出了点问题,还是有空再折腾吧。 :em06 :em06 :em06


_________________
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关


页首
 用户资料  
 
13 楼 
 文章标题 : Re: 怎样实现输出保留两位小数?
帖子发表于 : 2012-05-04 16:43 
头像

注册: 2008-08-13 8:48
帖子: 26391
地址: 东海硇州,一双管钥。
系统: Fundu i64
送出感谢: 50
接收感谢: 344
代码:
无高亮刷屏
echo "$nic:IN ${in_diff}K OUT ${out_diff}K TOTALIN ${in_total}M TOTALOUT ${out_total}M"

高亮刷屏
echo -e "$nic:IN \e[1;31m${in_diff}K\e[0m OUT \e[1;31m${out_diff}K\e[0m TOTALIN \e[1;31m${in_total}M\e[0m TOTALOUT \e[1;31m${out_total}M\e[0m"

无高亮单行输出
echo -ne "\e[s$nic:IN ${in_diff}K OUT ${out_diff}K TOTALIN ${in_total}M TOTALOUT ${out_total}M\e[u"

高亮单行输出
echo -ne "\e[s$nic:IN \e[1;31m${in_diff}K\e[0m OUT \e[1;31m${out_diff}K\e[0m TOTALIN \e[1;31m${in_total}M\e[0m TOTALOUT \e[1;31m${out_total}M\e[0m\e[u"

今天下午查了点资料,总算弄清楚这个问题了。 :em09 :em09 :em09


_________________
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关


页首
 用户资料  
 
14 楼 
 文章标题 : Re: 怎样实现输出保留两位小数?
帖子发表于 : 2012-05-09 22:30 
头像

注册: 2010-10-09 23:01
帖子: 7210
送出感谢: 8
接收感谢: 23
YeLee真厉害 :em11


_________________
GitHub博客——稍微改了一下版面(于2012/8/23
新浪微博——话痨
新浪博客——伪技术博客
GitHub主页——充斥眼球的Common Lisp


页首
 用户资料  
 
15 楼 
 文章标题 : Re: 怎样实现输出保留两位小数?
帖子发表于 : 2012-07-16 21:51 
头像

注册: 2008-08-13 8:48
帖子: 26391
地址: 东海硇州,一双管钥。
系统: Fundu i64
送出感谢: 50
接收感谢: 344
晕,发现加了控制代码之后,数值出现了很大的偏差……假如太精确的话,那效率确实不敢恭维。 :em20


_________________
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 15 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译