grep变量而不是文件

时间:2013-12-28 06:34:51

标签: regex bash shell grep

我希望能够检查包含字符串的变量是否与正则表达式模式匹配。我知道如何使用grep使用文件执行此操作,但我希望能够仅使用字符串来执行此操作。

例如,要查找变量是否包含.gif的文件名,我希望能够按照这一点做一些事情。

$ STRING=image.gif
$ grep "\.gif$" $STRING

当我运行此操作时,我收到此错误。

grep: image.gif: No such file or directory

有没有办法让grep将“image.gif”视为我想要搜索的字符串而不是文件的名称?

2 个答案:

答案 0 :(得分:4)

您可以使用bash“here string”从变量grep:

grep '\.gif$' <<< "$STRING"

答案 1 :(得分:2)

最简单的方法:

echo "$STRING" | grep "\.gif$"

由于grep能够从stdin读取,因此您可以将其调整为任意数量的情况(包括cat的文件IO,尽管这通常是一个坏主意,因为流更有效)。