linux初探

首页

应用服务器

Linux技巧

中文文档

Linux初级

服务器源代码

命令详解

Linux技术应用

Linux安全应用

Linux业界新闻

UniX技术文章

Linux编程与内核

Linux数据库

Linux服务器

Linux安装指导

Linux论坛

首页>>Linux编程与内核>>

热门文章

·C/C++中多维数组指针作为函数
·教你如何使用 C++Builder 制
·C++ Builder中保持控件的位置
·C++Builder中动态更改自定义
·拓展网页技术之C++在网页设计
·C++Builder创建基于Internet
·C++Builder在WIN2000环境下编
·用C++ Builder为计算机增加启
·C++/VC++ 语言编程的疑难问题
·C/C++语言void及void指针深层

推荐文章

Shell, Sqlite,date和awk


上周写了有生以来最复杂的Shell程序,这个程序的目的是从一个文本文件生成各种统计信息。文本文件有1000多行,每行对应一条记录,每条记录有10来个域。统计的信息很多,比如一个长时间段内,某个域发生某种变化的记录总数的变化趋势。统计信息的种类最终是8项。

  我决定拿Sqlite来作这个事情。Sqlite是个轻量级的数据库,它提供一个sqlite的命令行,通过它就能完成创建数据库、插入数据、查询等各种操作。我所要做的就是:

  1.从原始数据文件,也就是那个文本文件,生成一个sql语句文件,进而用sqlite生成数据库;
  2.生成查询统计信息的sql语句文件,然后用sqlite命令行进行查询。

  在shell程序中使用sqlite很方便,首先需要生成这样的sql语句文件
  sql语句文件sql.txt:
.output Somefile // 这句话告诉sqlite把sql执行的结果输出到文件
create tab ... // 正常的sql语句
insert into ....
.quit // 告诉sqlite退出

  然后,cat sql.txt | sqlite data.db。这样,sqlite就会执行sql.txt中的sql语句,并把结果保存到Somefile中。

  从原始数据生成创建数据库的sql.txt,当然是awk最胜任了。我也是这次才发现awk如此的好用。在计算平均值的时候也只能求助于它,因为它不会把商取整。
echo "$a $b"|awk '{ print $1/$2 }' #计算a/b的值

  最后说说shell编程,如果能有选择的话,我肯定会挑python、tcl甚至ruby,这样代码至少会让减少70%,看起来也会更elegant。一开始在Linux上写这个脚本,把对日期的处理完全交给date命令了,但是最终脚本运行在solaris上时,才发现solaris上的date傻得可以,只好自己处理日期的增减变化。不过提醒一下各位如果你们在Linux山写脚本要涉及日期的处理时,大可以把这份脏活交给date命令来作。

  比如你想看某个特定日期,比如说2005年10月1日,的前20天的日期,这么做就可以了:date "+%D" --date="10/01/2005 20 days ago"

相关文章:

·SHELL利用的各种初期化文件
·Shell的特点
·Shell脚本的建立
·升级和编译你的Linux核心
·tmpfile函数
·我爱linux
·linux内核时间,延迟,和延缓操作
·Linux下的Matlab使用syms出错的问题
·在Unix/Linux系统下调试脚本程序

Copyright@2005 www.linuxGoo.com All Right Reserved