Unix grep regex如何grep for

Unix grep regex如何grep for,regex,Regex,我有一个文本文件 $ cat test.log SYB-01001 SYB-18913 SYB-02445 SYB-21356 我只想申请01001和18913,怎么办 我希望输出是 SYB-01001 SYB-18913 SYB-02445 我试过这个,但不确定有什么问题 grep 'SYB-(18913)|0*)' test.log 将-E标志用于grep中的“扩展正则表达式” e、 g 其他需要注意的事项: 括号必须匹配(对于每个需要右括号的左括号) 0*意味着零个或多个0字符-实

我有一个文本文件

$ cat test.log
SYB-01001
SYB-18913
SYB-02445
SYB-21356
我只想申请01001和18913,怎么办

我希望输出是

SYB-01001
SYB-18913
SYB-02445
我试过这个,但不确定有什么问题

grep 'SYB-(18913)|0*)' test.log

-E
标志用于grep中的“扩展正则表达式”

e、 g

其他需要注意的事项:

  • 括号必须匹配(对于每个需要右括号的左括号)
  • 0*
    意味着零个或多个
    0
    字符-实际上,这将匹配所有字符

在grep中使用
-E
标志表示“扩展正则表达式”

e、 g

其他需要注意的事项:

  • 括号必须匹配(对于每个需要右括号的左括号)
  • 0*
    意味着零个或多个
    0
    字符-实际上,这将匹配所有字符
试试看:

grep 'SYB-\(18913\|0*\)' test.log
但是您可能不希望
0*
部分像这样工作。也许
0+
更好。

试试:

grep 'SYB-\(18913\|0*\)' test.log

但是您可能不希望
0*
部分像这样工作。也许
0+
更好。

你的括号不在了。试一试

grep 'SYB-[18913|0*]' test.log

你的括号出来了。试一试

grep 'SYB-[18913|0*]' test.log
awk

awk


认为您可能需要重新解释-您期望的输出与您所说的不匹配。认为您可能需要重新解释-您期望的输出与您所说的不匹配。在Linux Mint上进行检查,得到与问题所期望的相同的输出。
echo“SYB-11111”| grep'SYB-[18913 | 0*]“
在LinuxMint上检查了它,得到了与问题预期相同的输出。
echo“SYB-11111”| grep“SYB-[18913 | 0*]”