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 

.... ETC

我需要提取办公室名称中同时具有“Red Bus”(公司名称)和“Depot”的数据,而不是其他.....因此在输出文件中只有 B015^Red Bus Depot BSR

我目前正在尝试 egrep "pat1|pat2" 但它适用于 OR 条件,我也尝试过 if-then grep/sed - 因为我得到的结果满足任一模式而不是两个都 !

谢谢。

4

3 回答 3

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),因为不需要正则表达式。

如果你不能保证只有一个空格会分开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
于 2013-05-14T10:58:26.710 回答
1
sed -n '/Red Bus/{/Depot/p}' file
于 2013-05-14T11:01:15.563 回答
1

尝试管道。grep "Red Bus" <File> |grep Depot 基本上你 grep 为所有“红色巴士”,并在这些结果中,搜索哪些有“仓库”,这有效地创造了一个和条件

于 2013-05-14T11:01:15.883 回答