我想提取所有以“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
答案 0 :(得分:2)
这应该有效:
grep -oE "\bB[^[:space:]]+3\b" file
它将匹配B和3之间的所有字符(包括特殊字符和排除空格)。
如果您只想匹配单词字符:
grep -oE "\bB\w+3\b" file
-o
选项仅适用于匹配(仅返回匹配的字符串)。
-E
适用于扩展正则表达式。
注意:假设至少有一个字符必须介于B
和3
之间。如果不匹配(即如果B3
应匹配),请将正则表达式中的+
更改为*
。
答案 1 :(得分:1)
单独使用Grep可以提取单词。
grep -oP '\bB\w*3\b' file
或
grep -oP '(?<!\S)B\S*3(?!\S)' file