awk应用-获取文件的信息(一)
来源:互联网 发布:dj小可网络电音歌曲 编辑:程序博客网 时间:2024/06/06 03:50
现在我们来学习UNIX命令ls的几个脚本。下面的执行命令ls -l得到的一个长列表样本
-rw-rw-rw- 1 dale project 6041 Jan 1 12:31 com.tmp
-rwxrwxrwx 1 dale project 1778 Jan 1 11 :55 combine.idx
-rw-rw-rw- 1 dale project 1446 Feb 15 22:32 dang
-rwxrwxrwx 1 dale project 1202 Jan 2 23:06 format.idx
这个列表是一个报告,其中的数据按行和列显示。每个文件信息显示在单独的一行上。文件列表由9个列组成。文件的操作权限出现在第一列,文件的字节数显示在第五列,文件名显示在最后一列。在列之间由一个或多个空格来分隔,我们可以将每个列看做是一个字段。
在第一个例子中,我们将这个命令的输出结果导入一个awk脚本中,该脚本打印出该文件列表中选定的字段。为了完成这项操作,我们将创建一个shell脚本使得能够将数据输送到用户。因此, shell程序的结构是:
ls -l $* | awk 'script'
shell使用$*变量来扩展通过命令行传递的所有变量(这里可以使用$1来传递第一个变量,但是传递所有的变量将具有更大的灵活性)。这些参数可能是文件名、目录或ls命令的附加选项。如果没有指定参数, "$*"将为空并且显示当前目录。因此ls命令的输出可以传给awk,即使没有给出文件名也能自动读取标准的输入。
我们希望awk脚本能够打印文件的大小和名字。即打印第五个字段($5)和第九个字段($9)。
print $5"\t"$9
}'
如果将上面的代码保存在文件fls中并运行该文件,则可以执行fls文件:
$ ./fls
6041 com.tmp
1778 combine.id
1446 dang
1202 format.idx
$ ./fls com*
6041 com.tmp
1778 combine.idx
以上程序所做的工作就是读入一个长列表并将其减少为两个字段。现在我们来产生报告,增加一些新的功能以产生一些信息,这是ls -l列表所没有提供的。我们将每个文件的大小相加,得到列表中所有文件的总字节数。我们还能够跟踪文件的数量并计算出总数。增加这些功能包括两部分。首先累计每个输入行。我们创建变量sum来累加列表中文件的大小,用变量filenum来累加列表中文件的数量。
sum += $5
++filenum
print $5"\t"$9
}'
第一个表达式使用赋值操作符+=。它的功能是将第五个字段的值加到变量sum的当前值上。第二个表达式递增变量filenum的值。该变量作为一个计数器,每次表达式计算一次,计数器加1。
参考资料:http://www.linuxawk.com/communication/515.html
- awk应用-获取文件的信息(一)
- awk应用-获取文件的信息(二)
- awk应用-获取文件的信息(三)
- 使用awk巧妙获取规则文件里的有用信息
- awk应用-信息的检索
- PHP文件操作(一)获取文件信息,读取文件
- 获取文件的信息
- 获取文件的信息
- 获取文件的信息
- awk 获取MAC、IP信息
- 获取应用的常用信息
- 获取应用的缓存信息
- 获取文件的版本信息
- 获取 RRD 文件的信息
- 获取清单文件的信息
- 获取文件的简单信息
- 反射的应用(1)---获取类中各成分的信息
- awk的应用
- 6月14日--6月22日(15小时,剩3715小时)
- poj 1742 Coins
- php图像处理
- C语言及程序设计进阶例程-29 枚举类型及其应用
- Android性能优化 - 避免内存泄露
- awk应用-获取文件的信息(一)
- 上传文件时$_FILES为空的解决方法
- 【新坑】斐波那契钟计划
- C语言及程序设计进阶例程-30 联合体及其应用
- Android开发之常用布局
- C语言及程序设计进阶例程-32 位运算及其应用
- 左右div高度相同
- Effective Matlab—编写高效的Matlab代码
- web python -- WSGI接口POST请求