如何从reg query结果中grep出Office安装路径并赋值给变量?
用grep提取Office安装路径到变量的实用方案
刚好碰到过类似的需求!你已经通过reg query命令拿到了Word注册表项的输出,现在要把Path对应的C:\Program Files\Microsoft Office\Office16\提取到变量里,用grep配合文本处理工具就能轻松搞定,以下是两种适配不同环境的方法:
方法一:用支持Perl正则的grep(推荐)
如果你的环境是Git Bash、WSL或者安装了GnuWin32这类带新版grep的工具,可以用-oP选项直接精准提取:
# 执行命令并将路径存入变量 office_path=$(reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WINWORD.EXE" | grep -oP 'Path\s+REG_SZ\s+\K.*')
解释:
-o:只输出匹配到的内容,而非整行-P:启用Perl兼容正则表达式\K:忽略前面匹配到的Path REG_SZ部分,只保留后面的路径内容
方法二:适配老版本grep(无-P选项)
如果你的grep不支持Perl正则,可以先过滤出Path行,再用cut或awk提取路径:
用cut的写法:
office_path=$(reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WINWORD.EXE" | grep "Path" | cut -d' ' -f3-)
注意:如果reg输出的分隔符是多个空格或制表符,可能需要调整cut的参数,换成awk更稳妥:
用awk的写法:
office_path=$(reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WINWORD.EXE" | grep "Path" | awk '{print substr($0, index($0,$3))}')
解释:awk会自动处理多空格分隔,$3对应路径字段的起始位置,substr从该位置截取到行尾,得到完整路径。
内容的提问来源于stack exchange,提问作者user2568361
相关产品推荐
相关产品推荐

