Linux中cat g | grep 'a*'命令为何显示所有的行?

最近在学Linux,在测试这个命令时,产生困惑:

Linux中cat g | grep 'a*'

文件g中包含多行含有a,也有空行.使用这个命令后,只是高亮显示了字符a,依然显示所有行,而未将仅含有a的行例出来,这是什么原因呢?

*表示0个或者多个,如果你要使用正则建议grep -P "a*"

"*号表示重复前面字符0个或多个",原来当重复前面字符0次时就会显示所有行,即显示全文,同时高亮显示已找到的目标

grep a g 就可以了