如何构建正则表达式来获取某些行?

时间:2016-08-25 23:55:49

标签: regex bash

我正在处理如下文字:

FAPK   FAPK891  FACEBOOK       *BIPARY R       P
FAPK   FAPK891  FACEBOOK       *BIPARY S       P
.
.
.
FAOO   FAOO891  FACEBOOK       *BIPARY R       P
FAOO   FAOO891  FACEBOOK       *BIPARY S       P

事实是我想获得具有以下模式的行:

*BIPARY R

问题是,那个模式可以在每行的某个地方行,这是不固定的,我尝试过:

grep "BIPARY" 

但它给了我所有的线条,我也尝试过:

grep -e '.*\*BIPARY R.*$' text

但它什么都没有, 我想要感谢任何克服这种情况的建议,我遇到的问题是" *"符号和空间,因为那个模式可能出现在我想要的行的某个地方,我相信最好的方法是构建一个正则表达式,感谢任何方式。

我想要的输出只是具有我所指的特定模式的行:

FAOO   FAOO891  FACEBOOK       *BIPARY R       P

2 个答案:

答案 0 :(得分:1)

grep ".*\*BIPARY\sR.*" text

Wherever there are special character and if that is expected to be in the text escape those with backslash. 

空格表示为 \ s

答案 1 :(得分:1)

听起来这个模式是一个固定的字符串" * BIPARY R" - 你使用grep -F可以获得更快的性能 - 也是一个领先和尾随。*不要用grep正则表达式给你买任何东西

grep -F '*BIPARY R'