BASH - 为存储在变量中的值进行grepping

时间:2014-07-26 18:38:24

标签: linux bash grep

所以我试图通过以下命令在Windows注册表配置单元上使用grep:

grep -i -A6 HKEY_LOCAL_MACHINE\.SYSTEM\.ControlSet001\.Services\.atapi RegistryEntries/ControlSet001.reg | grep Start | tail -c 4 

这完全正常,并返回我感兴趣的值,即000

然而,当我试图存储" atapi"在变量中如下所示:

x="atapi"
grep -i -A6 HKEY_LOCAL_MACHINE\.SYSTEM\.ControlSet001\.Services.\.$x RegistryEntries/ControlSet001.reg | grep Start | tail -c 4 

我什么都没得到,我也尝试过使用

x=atapi

没有引号但仍然没有运气,我对BASH很新,所以我很可能会错过一些简单的东西!

1 个答案:

答案 0 :(得分:1)

这部分似乎是你的正则表达式中的问题:

Services.\.$x

因为它匹配文字Services任何字符之后的文字点。

删除Services后的额外点,并使用带引号的grep命令:

x="atapi"
grep -i -A6 "HKEY_LOCAL_MACHINE\.SYSTEM\.ControlSet001\.Services\.$x" RegistryEntries/ControlSet001.reg | grep Start | tail -c 4