shell学习7--awk的编程结构--BEGIN…
2014-10-08 15:42
316 查看
1.BEGIN模块:这个模块包括了一个操作块(也就是"{
}"内的内容)。该操作块是在文件输入之前执行的,也就是不需要输入任何文件数据,也能执行该模块。
BEGIN模块常用于设置修改内置变量如(OFS,RS,FS等),为用户自定义的变量赋初始值或者打印标题信息等。
BEGIN模块中的语句操作以“;”标志或者分行隔开。
eg:awk
'BEGIN{print "Hello World! Begin doing!"}'
#输出字符串
2.
END模块:与BEGIN模块相反,是处理完文件后的操作。不匹配任何输入行,常用于输出一些总结信息。
awk
'/mary/{count++}END{print "mary was found " count
"times."}' file1
#输出找到“mary”的次数
总结一下:awk基本结构为 : BEGIN{BEGIN操作}
{文件行处理块}
END{END操作
}
3.重定向:
输出重定向:awk的输出重定向操作符与shell的输出重定向操作符相同。
注意:重定向的目标文件必须用双引号括起来。
目标文件打开就一直保持打开状态直到 显式关闭或者awk程序终止。
>
覆盖目标文件内容
>>
追加到目标文件后面
awk
'$4>=70{print $1,$2
>"tmpfile"}' file1
输入重定向:使用getline函数,该函数用于从标准输入、管道或者文件(非当前处理的文
件)读取输入。
注意:如果文件不存在,getline的值是-1,读到文件尾则返回0,读到行返回1。
awk
'BEGIN{"date" | getline d;
print d}' file1
awk
'BEGIN{while(getline <
"/etc/passwd" >0) lc++; print lc}' file
#读取/etc/passwd的行数
4.
管道:如果在awk中打开了管道命令,就必须先关闭它才能打开另一个管道。管道右边的命令必须括在双引号之间。awk中每次只能打开一个管道。
awk '{print $1,$2 |"sort -r
+1 -2 +0 -1"}' file1
5.显式关闭文件和管道:如果awk程序打算再次使用某个文件或者再打开一个管道进行读写时,可能会显示无效。这个主要用于不影响EDN模块中的文件操作和管道命令。
(In script)
{ print
$1,$2,$3 | "sort -r +1 -2 +0 -1"}
END{
close("sort -r +1 -2 +0 -1")
注意:关闭的管道命令必须与打开时的一模一样。
6.system函数:用于在awk中运行shell脚本或命令
awk ‘BEGIN{
system("clear")}'
#运行shell的清屏命令clear
}"内的内容)。该操作块是在文件输入之前执行的,也就是不需要输入任何文件数据,也能执行该模块。
BEGIN模块常用于设置修改内置变量如(OFS,RS,FS等),为用户自定义的变量赋初始值或者打印标题信息等。
BEGIN模块中的语句操作以“;”标志或者分行隔开。
eg:awk
'BEGIN{print "Hello World! Begin doing!"}'
#输出字符串
2.
END模块:与BEGIN模块相反,是处理完文件后的操作。不匹配任何输入行,常用于输出一些总结信息。
awk
'/mary/{count++}END{print "mary was found " count
"times."}' file1
#输出找到“mary”的次数
总结一下:awk基本结构为 : BEGIN{BEGIN操作}
{文件行处理块}
END{END操作
}
3.重定向:
输出重定向:awk的输出重定向操作符与shell的输出重定向操作符相同。
注意:重定向的目标文件必须用双引号括起来。
目标文件打开就一直保持打开状态直到 显式关闭或者awk程序终止。
>
覆盖目标文件内容
>>
追加到目标文件后面
awk
'$4>=70{print $1,$2
>"tmpfile"}' file1
输入重定向:使用getline函数,该函数用于从标准输入、管道或者文件(非当前处理的文
件)读取输入。
注意:如果文件不存在,getline的值是-1,读到文件尾则返回0,读到行返回1。
awk
'BEGIN{"date" | getline d;
print d}' file1
awk
'BEGIN{while(getline <
"/etc/passwd" >0) lc++; print lc}' file
#读取/etc/passwd的行数
4.
管道:如果在awk中打开了管道命令,就必须先关闭它才能打开另一个管道。管道右边的命令必须括在双引号之间。awk中每次只能打开一个管道。
awk '{print $1,$2 |"sort -r
+1 -2 +0 -1"}' file1
5.显式关闭文件和管道:如果awk程序打算再次使用某个文件或者再打开一个管道进行读写时,可能会显示无效。这个主要用于不影响EDN模块中的文件操作和管道命令。
(In script)
$1,$2,$3 | "sort -r +1 -2 +0 -1"}
END{
close("sort -r +1 -2 +0 -1")
注意:关闭的管道命令必须与打开时的一模一样。
6.system函数:用于在awk中运行shell脚本或命令
awk ‘BEGIN{
system("clear")}'
#运行shell的清屏命令clear
相关文章推荐
- shell学习6--awk的编程结构--变量
- shell之awk的编程结构--BEGIN/END/重定向/管道
- 第四章 shell学习之sed命令和awk编程
- UNIX环境高级编程学习之第六章系统数据文件和信息-修改第四章实现的Shell的“ls -l”功能
- Shell 编程学习笔记
- shell学习笔记[grep,sed,awk,sort,for,until,while]
- Shell编程作业-awk
- C#2005 .NET3.0高级编程学习笔记————结构,部分类,静态类,Object类
- shell 编程学习
- UNIX环境高级编程学习之第四章文件和目录-用C实现Shell中的"ls -l"功能
- Shell脚本学习笔记(七)--sed和awk
- Chap 6 学习笔记-控制结构和过程式编程
- Shell脚本学习笔记(七)--sed和awk
- Shell 编程-学习笔记
- ARM体系结构与编程学习(一)
- awk初级使用-------shell学习(6)
- C#2005 .NET3.0高级编程学习笔记————类和结构,类的数据成员,类的函数成员(方法、属性)
- C#2005 .NET3.0高级编程学习笔记————类和结构,类的数据成员,类的函数成员(方法、属性)
- shell学习笔记三 分支结构
- Excel_VBA_编程教程(完整版)、开发环境、实例、函数大全、SVN、linux及shell学习