匹配字符串模式

时间:2015-07-06 06:27:46

标签: bash sed

我想提取所有以“B”开头并以“3”结尾的字符串。所有字符串都可以在“input.txt”文件中找到。

我使用了这个sed命令,但它取错了结果。任何人都可以帮助我吗?

sed -n '/^B*3$/p' input.txt

Sample_input:

Boby3
apple2
BUbbly3
Banana3
youas5
BUBLY3
BUb2

Sample_output:

Boby3
BUbbly3
Banana3
BUBLY3

2 个答案:

答案 0 :(得分:2)

这应该有效:

grep -oE "\bB[^[:space:]]+3\b" file

它将匹配B和3之间的所有字符(包括特殊字符和排除空格)。

如果您只想匹配单词字符:

grep -oE "\bB\w+3\b" file

-o选项仅适用于匹配(仅返回匹配的字符串)。

-E适用于扩展正则表达式。

注意:假设至少有一个字符必须介于B3之间。如果不匹配(即如果B3应匹配),请将正则表达式中的+更改为*

答案 1 :(得分:1)

单独使用Grep可以提取单词。

grep -oP '\bB\w*3\b' file

grep -oP '(?<!\S)B\S*3(?!\S)' file