2017-12-18 146 views
0

我有aa.dat具有类似下面的数据,如何基于不同列中的字​​符串grep数据?

frame  1 16980 O 17115H 17123H 
FRAME  1 16980 O 16971H 16981H 
frame  1 16982 O 17110H 17121H 
FRAME  1 16982 O 16961H 16978H 
frame  1 16984 O 17124H 17127H 
FRAME  1 16984 O 16983H 16990H 
frame  1 17110 O 17102H 17225H 
FRAME  1 17110 O 16951H 17138H 
FRAME  2 16982 O 16961H 16978H 
frame  2 16984 O 17124H 17127H 
FRAME  2 16984 O 16983H 16990H 
frame  2 17110 O 17102H 17225H 
FRAME  2 17110 O 16951H 17138H 
... 
frame  3 16984 O 17124H 17127H 
FRAME  3 16984 O 16983H 16990H 
frame  3 17110 O 17102H 17225H 
FRAME  3 17110 O 16951H 17138H 
frame  4 16980 O 17115H 17123H 
FRAME  4 16980 O 16971H 16981H 
frame  4 16982 O 17110H 17121H 
FRAME  4 16982 O 16961H 16978H 
frame  4 17110 Ac 17102H 17225H 
FRAME  4 17110 Ac 16952H 17118H 
... 

我想以“帧”和“17110”的数据只在第3列

FRAME  1 17110 O 16951H 17138H 
FRAME  2 17110 O 16951H 17138H 
FRAME  3 17110 O 16951H 17138H 
FRAME  4 17110 Ac 16952H 17118H 
... 

然而,我的代码

grep -E 'FRAME.*17110' aa.dat 

无法从17110H组成的行中分离数据。

任何建议和帮助将不胜感激。

最佳,

莱昂

回答

0
grep -P 'FRAME.*17110\W' aa.dat 

简要说明,

  • -P:解释图案作为一个Perl正则表达式
  • 追加\W将仅允许非字(即[^a-zA-Z_])