我自己的bash脚本搜索编译日志字符串(在交叉构建Linux软件包时由Bitbake cooker生成的高级日志)来搜索编译命令行字符串。在搜索到的日志中,这些命令字符串的长度很大,超过2300列ascii文本(由于多个-I和-W)。 使用以下正则表达式在日志文件中搜索编译命令行字符串
grep -E -e "^${TARGETCANONICAL}${COMPCMDPATT}"
其中
TARGETCANONICAL='arm-oe-linux-gnueabi-'
COMPCMDPATT="gcc[[:space:]].+[[:space:]]-c[[:space:]].+\w+\.c$"
使用的grep命令被构造为打印出匹配给定模式的每一行,而无需操作匹配到grep输出的输入行。 Ubuntu是构建机器。
日志文件中的每个编译命令字符串在几个点上都包含多个后续空格(空格)的序列。例如:
-ftree-vectorize -Wno-error=maybe-uninitialized
在由grep(正则表达式匹配)打印的行中,所有这些原始空白序列都合并为一个空白,即空白。 空格的合并不是这里所期望的。
可能是什么原因?
更新: grep输出进入命令替换(bash扩展),其输出分配给变量。然后使用回声将其打印出来或用于复合条件命令中-这是我进行观察/调试的级别。即使在随后的命令扩展或分配中,也可能是观察到现象的根本原因。