awk学习笔记(11) - 与shell联用

简介:

在awk程序中使用shell

awk学习笔记(6)中我们已经简单的了解了管道符的用途,本文会用更多的例子来详述awk中使用管道符来接收shell传递过来的数据的处理。

例子一:取得系统当前登录人数

编写count.awk文件:

 
 
  1. BEGIN { 
  2. while ( "who" | getline) n++ 
  3. print n  

执行:

 
 
  1. awk -f count.awk 

输出:

 
 
  1. 3

我当前开着两个命令行窗口,加上mac系统的登录数,刚好是3个

上面的程序也可以直接在命令行中写:

 
 
  1. awk 'BEGIN {while("who"|getline) n++;print n}' 

输出的结果是一样的。

解释:

who是shell命令,返回当前登录的记录;
getline一次取一行记录,成功就返回1,失败就返回-1;
n是变量,当成功读取了一条记录时就自加1;
while循环会遍历所有的登录记录;
最后print打印出总计数n到屏幕上。

例子二:取得当前目录的文件总数

 
 
  1. awk 'BEGIN {while("ls -a"|getline) n++;print n}' 

输出:

 
 
  1. 51 

这个例子跟上面的很像,只是shell命令带上了参数。

"ls -a"是列出当前目录下的所有文件,包含隐藏文件;
getline取一行记录,成功就返回1,失败返回-1;
n是计数变量;
while循环所有的记录;
print打印计数总数。

 










本文转自 ustb80 51CTO博客,原文链接:http://blog.51cto.com/ustb80/1035614,如需转载请自行联系原作者
目录
相关文章
|
4月前
|
Shell Linux C++
Linux C/C++ 开发(学习笔记二):Shell脚本编程案例
Linux C/C++ 开发(学习笔记二):Shell脚本编程案例
44 0
|
6月前
|
运维 Shell C语言
运维(20)- shell awk
运维(20)- shell awk
34 0
|
5月前
|
Shell 数据处理 Perl
shell脚本里的三剑客之一awk
shell脚本里的三剑客之一awk
57 2
|
2月前
|
存储 Shell Linux
【Shell 命令集合 文件管理】Linux 文本处理工具 awk命令使用指南
【Shell 命令集合 文件管理】Linux 文本处理工具 awk命令使用指南
40 0
|
4月前
|
Java Shell Linux
Shell编程 学习笔记
Shell编程 学习笔记
69 1
|
5月前
|
Shell Linux Perl
shell 学习笔记
shell 学习笔记
51 1
|
8月前
|
关系型数据库 MySQL Shell
数据库备份和Shell基础测试及AWK(运维)
数据库备份和Shell基础测试及AWK(运维)
|
9月前
|
Shell Linux Perl
Shell 基本(整数、小数、浮点数)运算($[]、$(())、let、expr、awk、bc)
Shell 基本(整数、小数、浮点数)运算($[]、$(())、let、expr、awk、bc)
152 0
|
11月前
|
Unix Shell Linux
【Shell编程】字符截取命令awk、sed命令
【Shell编程】字符截取命令awk、sed命令
167 0
|
11月前
|
Unix Shell Linux
两个实用的shell命令:sed和awk用法
两个实用的shell命令:sed和awk用法
96 0