到目前为止,我们在标准输出流上显示了数据,我们还可以将数据重定向到文件,重定向出现在 print 或 printf 语句之后,AWK中的重定向与shell命令中的重定向一样编写,只不过它们是在AWK程序中编写的。本章将通过适当的示例说明重定向。
重定向运算符
重定向运算符的语法是-
print DATA > output-file
它将数据写入输出文件。如果输出文件不存在,那么它将创建一个。以下示例将 Hello,Learnfk !!! 写入文件。
[Learnfk]$echo "Old data" > /tmp/message.txt [Learnfk]$cat /tmp/message.txt
在执行此代码时,您将获得以下输出-
Old data
现在,让我们使用AWK的重定向运算符将一些内容重定向到其中。
[Learnfk]$awk 'BEGIN { print "Hello, Learnfk !!!" > "/tmp/message.txt" }' [Learnfk]$cat /tmp/message.txt
在执行此代码时,您将获得以下输出-
Hello, Learnfk !!!
追加运算符
append运算符的语法如下-
print DATA >> output-file
它将数据附加到输出文件,如果输出文件不存在,那么它将创建一个,使用这种类型的重定向时,新内容将附加在文件末尾。如,以下示例将 Hello,Learnfk !!! 追加到文件中。
[Learnfk]$echo "Old data" > /tmp/message.txt [Learnfk]$cat /tmp/message.txt
在执行此代码时,您将获得以下输出-
Old data
现在,让我们使用AWK的append运算符向其中附加一些内容。
[Learnfk]$awk 'BEGIN { print "Hello, Learnfk !!!" >> "/tmp/message.txt" }' [Learnfk]$cat /tmp/message.txt
在执行此代码时,您将获得以下输出-
Old data Hello, Learnfk !!!
Pipe 管道
可以通过管道而不是使用文件将输出发送到另一个程序,此重定向打开到命令的管道,并将通过此管道的项目值写入另一个进程以执行命令,重定向参数命令实际上是AWK表达式。这是管道的语法-
print items | command
让我们使用 tr 命令将小写字母转换为大写字母。
[Learnfk]$awk 'BEGIN { print "hello, Learnfk !!!" | "tr [a-z] [A-Z]" }'
在执行此代码时,您将获得以下输出-
HELLO, Learnfk !!!
双向通讯
AWK可以使用|&来与外部过程进行通信,这是双向通信, 例如,以下示例使用tr命令将小写字母转换为大写字母。 我们的command.awk文件包含-
BEGIN { cmd="tr [a-z] [A-Z]" print "hello, Learnfk !!!" |& cmd close(cmd, "to") cmd |& getline out print out; close(cmd); }
在执行此代码时,您将获得以下输出-
HELLO, Learnfk !!!
脚本看起来很神秘吗?让我们揭开它的神秘面纱。
第一个语句 cmd =" tr [a-z] [A-Z]" 是我们从AWK创建双向通讯的命令。
下一条语句,即print命令,为tr命令提供输入, 在这里&| 表示双向通讯。
第三个语句,即 close(cmd," to"),在竞争执行后关闭 to 进程。
下一条语句cmd |&getline out借助getline函数将输出存储到out变量中。
下一条print语句打印输出,最后 close 函数关闭命令。
参考链接
https://www.learnfk.com/awk/awk-output-redirection.html
标签:输出,教程,重定向,cmd,无涯,AWK,print,Learnfk From: https://blog.51cto.com/u_14033984/7969704