AWK - 输出重定向

首页 / Awk / Output Redirection

到目前为止,我们在标准输出流上显示了数据,我们还可以将数据重定向到文件,重定向出现在 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命令提供输入, 在这里&| 表示双向通讯。

    链接:https://www.learnfk.comhttps://www.learnfk.com/awk/awk-output-redirection.html

    来源:LearnFk无涯教程网

  • 第三个语句,即 close(cmd," to"),在竞争执行后关闭 to 进程。

  • 下一条语句cmd |&getline out借助getline函数将输出存储到out变量中。

  • 下一条print语句打印输出,最后 close 函数关闭命令。

这一章《AWK - 输出重定向》你学到了什么?在下面做个笔记吧!做站不易,你的分享是对我们最大的支持,感谢!😊

相关文章

赵成的运维体系管理课 -〔赵成 - 49讲〕

DevOps实战笔记 -〔石雪峰 - 41讲〕

设计模式之美 -〔王争 - 113讲〕

说透区块链 -〔自游 - 19讲〕

分数更新.每 5 秒更换一次

ASP.NET MVC - Ajax 将空值传递给控制器

泛型参数放置之间的Typescript 差异

如何使在库范围之外无法访问的接口的具体实现.?

React 路由显示空白页面

使用 LINQ 过滤 DirectoryInfo 的 ObservableCollection

视频推荐〔Awk - 11-三剑客-sed-增删改查之后向引用〕

更多视频 »
好记忆不如烂笔头。留下你的足迹吧 :)