linux - 在一行中搜索多个关键字

标签 linux macos terminal grep

我想知道是否有强制“grep”命令在同一字符串或行中搜索多个关键字。 例子: 假设我有以下 block 文本:

 CT1   CD    750.000     1.2200 
 OB    CD    750.000     1.2200 
 OB    H     545.000     0.9600 
 CT1   CD   CP1   70.000    125.00   20.00   2.44200 ! ALLOW ALI PEP POL ARO PRO
 OB    CD   CT1   70.000    125.00   20.00   2.44200 ! ALLOW   ALI PEP POL ARO

我正在搜索仅包含“OB”和“CD”的行。所以我期望的输出是:

 OB    CD    750.000     1.2200 
 OB    CD   CT1   70.000    125.00   20.00   2.44200 ! ALLOW   ALI PEP POL ARO

但是,当我使用命令时: grep "OB\| CD"file1 我将获得整个 block 文本。

那么,是否有任何组合可以按照我想要的方式减少输出?

提前非常感谢。

P.S.:我使用 linux 和 os 10.9

最佳答案

使用awk你可以这样做:

awk '/OB/ && /CD/' file1

awk '/OB.*CD/' file1

这只会打印带有 OBCD 的行。最后一个示例 OB 需要位于 CD

之前

关于linux - 在一行中搜索多个关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21367558/

相关文章:

MACOSX - 如何自定义 IKImageBrowserView 以在每个项目上添加 NSButton?

python - 如何检测 sys.stdout 是否连接到终端?

linux - BASH - 将此脚本设置为定时/例行事件的最有效方法?

linux - Linux 上的 msemaphore?

linux - 使用 Lua 检测字符串中是否存在字符

php - 访问数据库

c - 如何不断刷新屏幕,实时更新

ios - 是否可以在 Ubuntu 上运行 Appium iOS 自动化测试?

python - 在 OSX 上调用 python 和 Spyder 的方法

python - LaunchAgent 脚本无法写入外部驱动器