2013-05-14 222 views
0

我需要我的任務,場景中的一個一定的幫助:我們有數據文件 - 如公交公司信息:(位置ID和公司辦公/場)提取數據

id^office 
B003^Red Bus Off BSR - GPO 
B015^Red Bus Depot BSR 
B003^Red Bus Off BSR - Main Stand 
B027^MCD Bus Depot LLR 
B047^MCD Bus Depot BSR 

。 ...等

我需要提取既有「紅色巴士」(公司名稱)和「車廠」在辦公室名稱不是其他.....因此在輸出文件中的數據只有 B015 ^紅色巴士倉庫BSR

我目前正在嘗試egrep「pat1 | pat2」,但適用於OR條件,我有也嘗試過,如果 - 然後grep/sed - 那dosent和我所需要的結果很好的一樣,因爲我得到的結果既滿足模式又不滿足!

謝謝。

回答

3

可以使用&&運營商,像這樣的邏輯AND使用與awk

$ awk '/Red Bus/&&/Depot/' file 
B015^Red Bus Depot BSR 

但你的數據顯示沒有理由不這樣做:

$ fgrep 'Red Bus Depot' file 
B015^Red Bus Depot BSR 

注:fgrep只是固定字符串grep(即grep -F)作爲regexps不是必需的。

如果你不能保證只將空間分隔Red BusDepot,但可以保證順序,那麼:

$ grep 'Red Bus.*Depot' file 
B015^Red Bus Depot BSR 

最後,如果你不能保證順序:

$ egrep 'Red Bus.*Depot|Depot.*Red Bus' file 
B015^Red Bus Depot BSR 
1
sed -n '/Red Bus/{/Depot/p}' file 
+0

這也有效。感謝Sidharth – nsd 2013-05-14 16:38:15

1

嘗試管道。 grep "Red Bus" <File> |grep Depot基本上你grep所有的「紅色巴士」,並在這些結果中,搜索其中有「車廠」,這有效地創造了一個條件