命令
grep -r CMAKE_C_COMPILER_ID
给出了以下输出:
printtimestamp.dir/DependInfo.cmake:SET(CMAKE_C_COMPILER_ID "GNU")
2.8.10.1/CMakeCCompiler.cmake:set(CMAKE_C_COMPILER_ID "GNU")
2.8.10.1/CMakeCCompiler.cmake:set(CMAKE_C_COMPILER_ID_RUN 1)
buildtimestart.dir/DependInfo.cmake:SET(CMAKE_C_COMPILER_ID "GNU")
buildtimeend.dir/DependInfo.cmake:SET(CMAKE_C_COMPILER_ID "GNU")
我想从中提取字符串GNU
(注意,字符串可能不是GNU总是,它可能是其他编译器,如CYGWIN
)。我可以使用grep
来实现这个的正则表达式是什么?任何其他等效的解决方案也没关系。这将在bash脚本中使用。
如果问题太具体,我很抱歉,我不知道如何构建它。
答案 0 :(得分:2)
答案 1 :(得分:2)
这是另一种方式:
awk '/CMAKE_C_COMPILER_ID / && sub(/\)$/,"",$NF) && $0=$NF' inputFile
我们告诉awk:
regex
/../
匹配的行
sub
功能放弃)
gnu sed
sed -nr 's/.*CMAKE_C_COMPILER_ID ([^)]+)\)$/\1/p' inputFile
使用sed
:
(..)
抓取所有内容)
\1
-n
禁用默认打印p
可以在成功的行上打印r
可让我们提高sed
的可读性。如果不支持-r
,您可以使用-E
。