您的位置:首页 > 编程语言 > PHP开发

AWK学习笔记-2.4Output输出

2017-04-11 20:23 211 查看

Output输出

awk的输出分隔符由OFS(列分隔符,默认空格” “)和ORS(行分隔符,默认换行”\n”)决定

输出函数意义
print
print expression, expression, …
print expression, expression, … >filename
print expression, expression, … >>filename
print expression, expression, … | command
printf(format, expression, expression, … )
printf(format, expression, expression, … ) >filename
printf(format, expression, expression, … ) >>filename
printf(format, expression, expression, … ) |command
close
system (command)

print

print 和 print$0 一样

print “”输出空行

output Into Files

格式空值字符

与c语言类似。

符号
cASCII character
ddecimal integer 十进制
e[-]d.ddddddE[+-]dd 科学计数法
f[-]ddd.dddddd 浮点数
g输出格式为f格式或e格式,系统根据数据占宽度m大小,自动选择占宽度较小的某种格式输出,g格式符不输出小数点后无意义的零
ounsigned octal number 无符号8进制
sstring 字符串
xunsigned hexadecimal number 无符号16进制
%%%用来转义,输出%
Example(书上的例子)

fmt1|printf(fmt,1)
%c97
%d97.5
%5d97.5
%e97.5
%f97.5
%7.2f97.5
%g97.5
%.6g97.5
%o97
%06o97
%x97
|%s|January
|%10s|January
|%-10s|January
|%.3s|January
|%10.3s|January
|%-10.3s|January

>重定向操作

此重定向将数据写入输出文件。如果输出文件不存在,那么它被创建。如果已经被创建将会覆盖之前的内容
{ print \$1, \$2 > \$3 }


如果需要单独使用>需要加括号,比如不叫$2和$3的大小
{print $1,($2 > $3)}


>>追加操作

这种重定向追加数据到输出文件output-file。如果输出文件不存在,那么它被创建。当使用这种类型的重定向时,新的内容被附加在文件的结尾。

|管道

通过管道来发送代替使用文件输出到另一个程序。这种重定向打开一个管道命令,并通过这个管道写入项的值,以另一种方法来执行命令。重定向参数命令实际上是一个AWK表达式。

awk 'BEGIN { print "hello, world !!!" | "tr [a-z] [A-Z]" }'


HELLO, WORLD!!!

# print continents and populations, sorted by population
BEGIN   { FS = "\t" }
{ pop[$4] += $3 }
END     { for (c in pop)
printf("%15s\t%6d\n", c, pop[c]) | "sort -t'\t' +1rn"
}


​ Asia 2173

North America 340

​ Europe 172

South America 134

(都是右对齐)

输出到标准错误文件中

print message I "cat 1>&2"
# redirect cat to stderr

system( "echo '" message "' 1>&2")
# redirect echo to stderr

print message > "/dev/tty"
# write directly on terminal

文件和管道靠名字识别

关闭文件和管道

close(expr)

close("sort -t'\t' +1rn")


可以在awk中打开一个管道,且同一时刻只能有一个管道存在。通过close()可关闭管道。如:awk '{print1, $2 | “sort” }’ test END {close(“sort”)}。awk把print语句的输出通过管道作为linux命令sort的输入,END块执行关闭管道操作。

|&双向通信

AWK可以通信使用一个外部进程|&

system函数可以在awk中执行linux的命令。

如:$ awk ‘BEGIN{system(“clear”)’;其返回值是命令的退出状态码,首先它会清除所有的缓冲区输出,然后启动一个/bin/sh实例执行命令,启动新进程。

fflush函数用以刷新输出缓冲区,如果没有参数,就刷新标准输出的缓冲区,如果以空字符串为参数,如fflush(“”),则刷新所有文件和管道的输出缓冲区。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  awk