Answers:
您的示例有两个问题。
主要的一个假设是,您假设正则表达式与glob模式的工作方式相同,因为它*是一个通配符,表示“任何字符序列”。在正则表达式中,*表示“任意数量的前一个原子”,因此fil*表示f后跟i零个或多个l字符。您需要说出grep fil.*其预期的含义:.意思是“任何单个字符,所以.*意思是“任何字符序列”。
较小的问题是,您正在使用未加引号的特殊字符,这些特殊字符表示在glob规则下的某些内容,这意味着shell可以解释它们。如果您在本地目录中有任何文件匹配glob模式fil*或abc*,shell将对其进行扩展,因此grep将获得扩展的文件名作为模式,而不是预期的RE。每当您在命令行上使用此类字符时,都应引用它们:echo file | grep 'fil.*'。
echo file|grep fil*用file 回答。