linux awk重定向,AWK输出重定向

到目前为止,我们已经显示数据在标准输出流。但是,也可以重定向数据到文件。print 或 printf 语句重定向显示。重定向在AWK写就像在重定向shell命令,但它们是写在AWK程序中。下面的这个教程是解释重定向例子。

重定向操作

下面给出的是重定向操作的语法。

printDATA>output-file

此重定向将数据写入输出文件。如果输出文件不存在,那么它被创建。当使用这种类型的重定向时,之前的第一个输出被写入到它的输出文件将被删除。随后写入同一个输出文件不删除输出文件,只会追加到文件。比如下面的例子中写道:Hello, World !!! 消息到该文件。

让我们创建一些文本数据的文件。

[jerry]$ echo"Old data">/tmp/message.txt[jerry]$ cat/tmp/message.txt

在执行上面的代码后,会得到以下结果:

Old data

现在让我们重定向某些内容到文件,使用AWK的重定向操作。

[jerry]$ awk'BEGIN { print "Hello, World !!!" > "/tmp/message.txt" }'[jerry]$ cat/tmp/message.txt

在执行上面的代码后,会得到以下结果:

Hello, World !!!

追加操作

下面给出的是追加操作的语法:

printDATA>>output-file

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

让我们创建一些文本数据的文件。

[jerry]$ echo"Old data">/tmp/message.txt[jerry]$ cat/tmp/message.txt

在执行上面的代码后,会得到以下结果:

Old data

现在让我们用AWK的追加操作,加追加一些内容吧。

[jerry]$ awk'BEGIN { print "Hello, World !!!" >> "/tmp/message.txt" }'[jerry]$ cat/tmp/message.txt

在执行上面的代码后,会得到以下结果:

Old data

Hello, World !!!

管道

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

printitems|command

让我们用tr命令,以小写字母转换为大写。

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

在执行上面的代码后,会得到以下结果:

HELLO, WORLD !!!

双向通信

AWK可以通信使用一个外部进程|&,这是双向通信。比如下面的例子中使用tr命令,以小写字母转换为大写。我们 command.awk 文件看起来是这样的:

BEGIN{cmd="tr [a-z] [A-Z]"print"hello, world !!!"|&cmd

close(cmd,"to")cmd|&getlineoutprintout;close(cmd);}

在执行上面的代码后,会得到以下结果:

HELLO, WORLD !!!

有点晕了没有?让我们一步步来分析上面的代码:

第一条语句, cmd = "tr [a-z] [A-Z]" -是打算从AWK建立双向通信的命令。

下面的语句即打印命令,提供输入到tr命令。此处&| 指示双向通信。

第三条语句即 close(cmd, "to") - 关闭完成其执行后处理。

下一条语句cmd |& getline out存储在输出入出变量具有getline函数功能。

接下来print语句打印输出,并最终执行close函数关闭命令。

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值