我使用grep有什么问题?

时间:2016-12-03 12:20:50

标签: linux shell grep tr

我正在执行以下命令:

echo "ze2s hihi" | tr ' ' '\n' | grep 'h*'

但是我没有在输出中获得hihi,而是得到了这个:

ze2s
hihi

怎么了?

4 个答案:

答案 0 :(得分:2)

你想要的是:

echo "ze2s hihi" | tr ' ' '\n' | grep 'h.*'

用" h *"你要求按顺序匹配任意数量的h,包括0 h,其中ze2匹配。

或许您只想匹配包含h:

的任何内容
echo "ze2s hihi" | tr ' ' '\n' | grep 'h'

答案 1 :(得分:2)

如果您只想在开头添加egrep行,请考虑使用grep -Eh*

echo "ze2s hihi" | tr ' ' '\n' | egrep '^h'

答案 2 :(得分:2)

星号与前一项匹配零次或多次。因此h*匹配h 或更多次,即任何事情。

如果您想匹配h及其后的任何字符,请使用h.*表达式,其中句点与任何单个字符匹配。

答案 3 :(得分:1)

你得到了问题的答案,但是你不需要多个命令和管道来做你想做的事情:

$ echo "ze2s hihi" | awk -v RS='\\s+' '/h/'
hihi

以上使用GNU awk表示多字符RS,\s表示空格字符。