我想知道是否还有强制“grep”命令在同一个字符串或行中搜索多个关键字。 例: 假设我有以下块文本:
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
我将获得整个块文本。
那么,是否有任何组合以我想要的方式减少输出?
非常感谢提前。
P.S。:我使用linux和os 10.9
答案 0 :(得分:0)
您可以使用egrep
。做到了
egrep "(OB|CD)" file1
答案 1 :(得分:0)
使用awk
即可:
awk '/OB/ && /CD/' file1
awk '/OB.*CD/' file1
这只会打印OB
和CD
的行。最后一个示例OB
需要在CD
答案 2 :(得分:0)
如果关键字的顺序很重要:
grep 'OB.*CD' file1
如果您想要任何顺序的关键字:
grep "OB" file1 | grep "CD"
grep "OB \| CD" file1
返回所有行,因为它具有逻辑OR而不是AND。