我需要一些关于我的任务的帮助,方案:我们有数据文件 - 例如公交公司信息:(位置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 ^ Red Bus Depot BSR
我目前正在尝试egrep“pat1 | pat2”,但这适用于OR条件,我也尝试过if-然后grep / sed - 这个剂量可以很好地满足要求,因为我得到满足任何一个的结果模式,而不是两者!
感谢。
答案 0 :(得分: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
),因为不需要regexp。
如果您不能保证只有空格会将Red Bus
和Depot
分开,但可以保证订单:
$ grep 'Red Bus.*Depot' file
B015^Red Bus Depot BSR
最后,如果您不能保证订单:
$ egrep 'Red Bus.*Depot|Depot.*Red Bus' file
B015^Red Bus Depot BSR
答案 1 :(得分:1)
sed -n '/Red Bus/{/Depot/p}' file
答案 2 :(得分:1)
grep "Red Bus" <File> |grep Depot
基本上你为所有“红色巴士”而grep,在这些结果中,搜索哪个有“Depot”,这有效地创造了一个和条件