The pipe character

The pipe character (|) tells the regex engine to match any of the passed strings. So, if one of them exists, that is enough for the pattern to match. It's like a logical OR between the passed strings:

$ echo "welcome to shell scripting" | awk '/Linux|bash|shell/{print $0}'
$ echo "welcome to bash scripting" | awk '/Linux|bash|shell/{print $0}'
$ echo "welcome to Linux scripting" | awk '/Linux|bash|shell/{print $0}'
$ echo "welcome to shell scripting" | sed -r -n '/Linux|bash|shell/p'
$ echo "welcome to bash scripting" | sed -r -n '/Linux|bash|shell/p'
$ echo "welcome to Linux scripting" | sed -r -n '/Linux|bash|shell/p'

All the previous examples have a match, since any of the three words exists in each example.

There are no spaces between the pipes and the words.