2013-05-14 197 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所有的“红色巴士”,并在这些结果中,搜索其中有“车厂”,这有效地创造了一个条件