awk学习笔记-4
来源:互联网 发布:php订单系统 编辑:程序博客网 时间:2024/06/15 15:04
输出重定向
将awk的输出重定向到Unix/Linux文件时,会用到shell的重定向操作符。重定向的目标文件名必须用双引号扩起来(因为awk把字符串都看做变量,除非使用""括起来)。如果使用的重定向操作符为>,则文件被打开并清空。文件一旦被打开,就会保持直至显式关闭或awk程序终止。此后print语句的输出都将追加到文件尾部。符号>>也可用于打开文件,但是不清除文件内容,它只向文件追加内容。
#使用常量表示文件名
awk '$4 >= 70 {print $1,$2 >"passing_file" }' filename
#使用变量表示文件名
awk '$4 >= 70 {file="passing_file";print $1,$2 > file}' filename
#显式关闭打开的文件
awk -F '|' '{print $1,$2 >"l.txt";close("l.txt")}' a.txt
管道
如果在awk程序中打开了管道,就必须先关闭它才能打开另一个管道。管道符右边的命令被括在双引号之间。每次就只能打开一个管道。
awk '{print $1,$2 | "sort -r +1 -2 +0 -1 "}' names
如果打算再次在awk程序中使用某个文件或管道进行读写,则可能要先关闭程序,因为其中的管道会保持打开状态直至脚本运行结束。注意,管道一旦被打开,就会保持打开状态直到awk退出。因此,END块中的语句也会受管道的影响。
{ print $1,$2 | "sort -r +1 -2 +0 -1 " } END{ close("sort -r +1 -2 +0 -1 ") <rest of statements> }
说明:执行到END块时,管道被关闭。双引号中的字符串必须与最初打开管道的pipe命令字符串完全一致。
附注:sort 排序时,在对字段中的列进行编号时,缺省字段分隔符中的空格符将作为后继字段计数。前导空格不计作第一字段的一部分,-t 标志指定的字段分隔符将不作为字段的一部分计数。可使用 -b 标志忽略前导空格符。字段分隔符是否作为后继字段计数将直接影响到sort [ + [ FSkip ] [ .CSkip ] [ b ] [ d ] [ f ] [ i ] [ n ] [ r ] ] [ - [ FSkip ] [ .CSkip ] [ -k KeyDefinition ]排序的结果。
关闭文件
使用>或|对标准输出函数重定向后,有时需要在awk结束前显式关闭文件。
close(filename);close(置于管道符之后的command);
next语句
next语句从输入文件中取出下一行输入,然后从awk脚本的顶部重新开始执行。类似于C语言中的continue。
{ if ($1 ~ /Peter/) {next} else {print} }
说明:如果某一行的第一个字段包含Peter,awk就跳过改行,从输入文件中读取下一行,然后从头开始执行脚本。
exit(ret)
说明:exit语句用于终止awk程序。它只能中断对记录的处理,不能跳过END语句。如果exit语句的参数是一个0-255之间的值(exit 1),这个值就会被打印在命令行上,以表明程序是否执行成功,并指出失败的类型。awk程序执行完成后,在shell中可以使用$?获取awk的执行结果。
system("Unix Command")
说明:awk的内置函数system以Unix/Linux的系统命令作为参数,执行该命令并且将命令的退出状态返回给awk程序。它很像C语言的一个标准库函数,该函数恰巧也为system()。注意,作为参数的Unix/Linux命令必须加双引号。
- awk学习笔记-4
- [转]Awk学习笔记
- Awk学习笔记(转)
- awk学习笔记
- Awk学习笔记
- Awk学习笔记
- Awk学习笔记
- Awk学习笔记
- awk学习笔记
- Awk学习笔记
- awk学习笔记
- [转]Awk学习笔记
- AWK学习笔记
- Awk学习笔记
- Awk学习笔记
- AWK学习笔记
- Awk学习笔记
- [linux]Awk学习笔记
- 仿鲜果联播的view
- iOS开发ASIHTTPRequest中Cookie的使用
- jsoncpp,UDT,libjingle,PJSIP四个开源库的收集
- iOS安全攻防(十三):数据擦除
- HDU5033-Building(维护单调栈)
- awk学习笔记-4
- 为什么大型互联网应用选择Java+Linux
- 在eclipse中 Android SDK 无法打开模拟器问题
- 端口80被Microsoft-HTTPAPI/2.0占用的解决办法
- 无线网络通信技术完全介绍
- Java中日期类的总结
- shell 字符串处理
- 立足本土以快见长,移动信息化服务商取胜之道
- TCP Client实现对mysql的操作