awk可以消息到一个外部处理使用"|&",它是双向通讯的。
下面简单的sed例子用"Sed and Awk"替换单词"Awk"。
$ echo "Awk is great" | sed 's/Awk/Sed and Awk/'
Sed and Awk is great
从awk工作理解如何双向通讯,下面awk脚本模拟上述简单例子使用"|&"
$ cat two-way.awk
BEGIN {
command = "sed 's/Awk/Sed and Awk/'"
print "Awk is Great!" |& command
close(command,"to");
command |& getline tmp
print tmp;
close(command);
}
$ awk -f two-way.awk
Sed and Awk is Great!
在上面例子里:
1. command = "sed 's/Awk/Sed and Awk/'"-- 这是我们打算从AWK建立双向通信的命令。这是一个简单sed人替换命令,用"Sed and Awk"替换"Awk"
2. print "Awk is Great!" |& command -- 输入命令。比如,输入到sed替换命令的内容是"Awk is Great!"。"|&"表示它是一个双向通讯。输入到右侧的命令内容来自"|&"左侧。
3. close(command,"to") - 一旦处理被执行,你应该关闭"to"处理。
4. command |& getline tmp - 现在处理完成,是时候使用getline函数获得处理输出了。先前执行的命令的输出现在将存储在变量“ TMP ” 里。
5. print tmp-这是打印输出。
6. close(command) - 最终,关闭命令。
双向通讯非常灵便,当你在很大程度上依赖外部程序的输出时。