创建Grep命令查找以小写元音开头和结尾的所有文件名



我一直在努力使用这个grep命令:

ls data | grep -E "^[aeiou].*[aeiou]$"

该命令应该查找以小写元音

开头和结尾的所有文件根据我的理解,在使用-E标识符时不需要任何转义字符,因此它不会被解释为锚。我把这个命令列在我的Makefile中的目标下,并且$继续像锚一样工作。

有人知道我在这里错过了什么吗?

当试图使用转义字符运行时,目标将完全忽略$符号并不带它打印。使用前面提供的命令运行目标会出现以下错误:

ls data | grep -E "^[aeiou].*[aeiou]
/bin/sh: 1: Syntax error: Unterminated quoted string
make: *** [Makefile:11: p3] Error 2
当添加一个额外的引号时,我遇到了同样的问题,它会忽略$符号

如果你正在编写一个makefile规则,请在你的问题中包含实际的规则。命令行脚本的行为与makefile中的recipe的行为不是100%相同的。

如果你想让shell接收一个$,并且你正在编写一个makefile配方,你必须转义它,因为$是特殊的。写:

list:
ls data | grep -E '^[aeiou].*[aeiou]$$'

注意这里是$$而不是$

相关内容

  • 没有找到相关文章