^ 之后的管道在 bash 正则表达式中的作用是什么?

What does pipeline after ^ does in a bash regex?

我有一个非常简单的 bash 命令序列:

echo "output 3:"
echo "abc shalom" >|F1
echo " abc shalom 4" >> F1
echo "abc shalom12" >> F1
echo "abc shalom123 shalom6" >> F1
echo "abcshalom22 456 shalom" >> F1
egrep "(^|[ ]*)[^ ]+[ ]+shalom($|..[ ])" F1

输出是:

abc shalom
abcshalom22 456 shalom

我不明白这个简单的正则表达式是如何工作的,我知道管道是 "or",但我不明白我如何获得这两行...

有人可以逐步向我解释这个简短的正则表达式中发生了什么吗?

让我们看看:

egrep "(^|[ ]*)[^ ]+[ ]+shalom($|..[ ])" F1

| 表示匹配一个或另一个。因此,aa|bb 表示:匹配 aabb.

^|[ ]* 您正在使用正则表达式来匹配行的开头(由 ^ 表示)或零个或多个空格的序列(由 [ ]* 表示) .