我抬头看怎么做,但不知道如何使用tee
。 这有点令人困惑,因为我正在使用awk
的输出。 这是我到目前为止的内容:(请记住,我是一个初学者)
num1=2
num2=4
awk 'if (/'$num1'/ == /'$num2'/)
{
print "Hello"
}
else
{
print "Goodbye"
}' | tee file1.txt file2.txt
我不知道为什么awk
的输出未在文本文件中打印。
您的awk命令包含语法错误。 @anubhava已为您解决了这一问题。
为了演示tee
,让我们做一些简单的事情:
$ date | tee file1.txt file2.txt
Thu Jun 12 10:44:26 EDT 2014
$ cat file1.txt
Thu Jun 12 10:44:26 EDT 2014
$ cat file2.txt
Thu Jun 12 10:44:26 EDT 2014
结论:您对tee
的调用很好。 您的输出文件不包含任何文本,因为您的awk
程序仅将其错误消息打印到stderr而不输出到stdout。 如果要将awk的所有输出都放入文件中,请将awk的stderr重定向到stdout:
awk '...' 2>&1 | tee ...
我将把这个解释留作练习
使用awk -v name=value
选项将shell变量传递给awk:
num1=2
num2=4
awk -v n1=$num1 -v n2=$num2 'BEGIN {if (n1 == n2) print "hello"; else print "Goodbye"}'
| tee file1.txt
要从awk
本身重定向输出:
awk -v n1=$num1 -v n2=$num2 'BEGIN {
if (n1 == n2) print "hello"; else print "Goodbye"}' > output.txt
将输出管道传输到tee
会将输出写入您指定的文件,并将输出写入stdout。 因此,如果要将输出写入多个文件,则可以通过管道将其传输到另一个tee
如下所示:
bbbco $ echo "hello world" | tee /tmp/helloworld1.txt | tee /tmp/helloworld2.txt
hello world
bbbco $ cat /tmp/helloworld1.txt
hello world
bbbco $ cat /tmp/helloworld2.txt
hello world