Io-Redirection
將標準輸出及其替換加入表中
說我有:
$ cat tmp1.txt a b c
然後
$ paste tmp1.txt <(tr '[:lower:]' '[:upper:]'<tmp1.txt) a A b B c C
我將如何將以上內容修改為
1/ 只呼叫
tmp1.txt
一次?(我懷疑tee
)2/ 提供
tmp1.txt
來自終端的內容(就像由命令的輸出產生的一樣)。為此,我試圖對此進行修補,但並沒有走得太遠:$ cat<< 'EOF' | tee >(tr '[:lower:]' '[:upper:]') a b c EOF
輸出:
a b c A B C
tee
使用命名管道為和之間的數據創建附加通道tr
:$ mkfifo pipe $ tee pipe <file | paste - <( tr '[:lower:]' '[:upper:]' <pipe ) a A b B c C
或者(但不那麼好看),將 移動
tr
到左側|
:$ mkfifo pipe $ tee >( tr '[:lower:]' '[:upper:]' >pipe ) <file | paste - pipe
您需要額外的命名管道才能提供由
tr
to轉換的數據paste
。該paste
實用程序需要讀取兩個流,即原始數據和轉換後的數據。其中一個可以是標準流,而另一個需要來自原始文件(第二次讀取文件)或命名管道,如上所示。