我在发疯,希望有人能回答我的问题!
我最近开始在Java编程中学习正则表达式,但是对于如何让某些特性直接在BASH中正常工作有些困惑。例如,下面的代码没有按我认为的那样工作。

echo 2222 | grep '2\{2\}'

我期待它回来:
22

我尝试过它的变体,包括:
echo 2222 | grep '2{2}'
echo 2222 | grep -P '2\{2\}'
echo 2222 | grep -E '2\{2\}'

但是我完全没有主意了。我相信这是一个简单的参数/语法修复程序,希望得到一些帮助!我已经做了大量的谷歌搜索,我在BASH中发现的每一个引用都不起作用;regex可以在这么多不同的平台和引擎上运行=/

最佳答案

echo 2222 | grep -E '2{2}'
2222

正则表达式将在行上进行模式匹配,如果匹配,则打印出整行(2222),如果不匹配,则不打印任何内容。
它不会抽出输出的一部分。为此,你需要像sed这样的东西:
echo 2222 | sed 's/.*\(2\{2\}\).*/\1/'
22

10-04 13:30