我有一个文件test-matching.txt
,如下所示:
ba
bababa
baba
babadooba
根据grep手册页,我应该能够使用表达式
获取除第一行之外的所有行grep "ba{2,}" test-matching.txt
这应该匹配包含2个或更多" ba"的字符串实例的所有行。但是,当我运行它时,我没有输出。
首先,我尝试grep "ba" test-matching.txt
只是为了确保它正常工作,它给了我所有四行作为输出。
我还尝试了以下方法,每个都没有输出:
grep -e "ba{2,}" test-matching.txt
grep -e 'ba{2,}' test-matching.txt
grep -e "ba\{2,\}" test-matching.txt
grep 'ba{2,}' test-matching.txt
grep "ba\{2,\}" test-matching.txt
grep -e 'ba{2}' test-matching.txt
grep -e 'ba{2} test-matching.txt
匹配" ba"的所有行的正确方法是什么?连接2次或更多次?
答案 0 :(得分:3)
如果要使用扩展正则表达式语法,请使用egrep
或grep -E
(不是grep -e
)。如果要使用基本正则表达式语法,则需要反斜杠 - 转义大括号。最后,如果您想重复ba
,则需要对egrep '(ba){2,}'
或grep '\(ba\)\{2,\}'
进行分组,如果您更喜欢使用基本正则表达式。
答案 1 :(得分:2)
ba{2,}
仅点击a
baa
baaa
baaaa
etc
您需要(ba){2,}
才能使其适用于群组。
尝试:
egrep "(ba){2,}" file
或
grep "\(ba\)\{2,\}" file
bababa
baba
babadooba