首页 > 解决方案 > grep 打印输出,合并空格

问题描述

我自己的 bash 脚本搜索编译日志(Bitbake cooker 在交叉构建 Linux 软件包时生成的更高级别的日志)以查找编译命令行字符串。搜索日志中的这些命令字符串很长,超过 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 扩展),其输出分配给变量。然后使用 echo 打印出来或在复合条件命令中使用 - 这是我自己进行观察/调试的级别。即使在随后的命令扩展或分配中,观察到的现象也可能是根本原因。

标签: grepoutputwhitespaceconsolidation

解决方案


推荐阅读