[英]I want to pipe an output to multiple files in bash
我抬頭看怎么做,但不知道如何使用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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.