2011-09-27 38 views
1

我是UNIX新手,遇到可能非常簡單的概念問題。我想將awk的輸出設計爲返回一列數據(在這種情況下,它是包含FC WWN的幾行),並將其用作grep中的搜索參數,就像我將使用文件一樣包含列。如何將函數的多行輸出傳遞給grep?

我首先想到的是簡單的輸入 的grep -f AWK { '打印$ 3'} MYFILE myotherfile

顯然,沒有工作。我知道我可以簡單地用兩個命令和一箇中間文件(輸出我的awk到一個新文件,並使用grep -f),但我想知道是否有辦法做到這一點無需添加文件。

背景:我使用的是AIX 5.3和bash

回答

1

你可以用漂亮的$<慶典成語慶典用的輸出替換文件名參數一個指定的命令。

fgrep -f <(awk '{print $3}' myfile) myotherfile 
+0

非常感謝!這工作。 – Basil

1

出現與GNU grep的工作(不知道AIX grep的)一個常見的成語是使用-作爲標準輸入的規範。所以你的情況,如果我理解正確命令,你會使用:

awk {'print $3'} myfile | grep -f - myotherfile

+0

我試了一下,得到了一個「grep:0652-033無法打開 - 」錯誤。這個原理叫什麼名字,所以我可以檢查AIX手冊,看它們是否改變了使用的字符或者什麼? – Basil

+0

我不認爲它被稱爲任何東西。甚至在GNU grep'man'或'info'頁面中都沒有提到它。這只是很多程序支持的東西,所以我想我會嘗試一下。你可以用命名管道來做到這一點,但在這種情況下,它基本上和輸出到中間文件一樣。 – drysdam