我有一个非常简单的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
我无法理解这个简单的正则表达式如何工作,我理解管道是“或”,但我不明白我如何得到这两行......
有人可以一步一步地向我解释这个短正则表达式中发生了什么吗?
答案 0 :(得分:1)
让我们看看:
egrep "(^|[ ]*)[^ ]+[ ]+shalom($|..[ ])" F1
|
表示匹配任何一个或另一个。因此,aa|bb
表示:匹配aa
或bb
。
说^|[ ]*
你正在使用正则表达式匹配行的开头(由^
表示)或零或多个空格的序列(由[ ]*
表示)。< / p>