grep打印输出,合并空白

grep打印输出,合并空白,grep,output,whitespace,consolidation,Grep,Output,Whitespace,Consolidation,我自己的bash脚本在编译日志(Bitbake cooker在交叉构建Linux软件包时生成的高级日志)中搜索编译命令行字符串。搜索日志中的那些命令字符串长度巨大,超过2300列ascii文本(由于几个-I和-W)。 使用以下正则表达式在日志文件中搜索编译命令行字符串 grep -E -e "^${TARGETCANONICAL}${COMPCMDPATT}" 在哪里 Used grep命令用于打印出与给定模式匹配的每一行,而无需对打印到grep输出的匹配输入行进行任何操作。Ubuntu是一个

我自己的bash脚本在编译日志(Bitbake cooker在交叉构建Linux软件包时生成的高级日志)中搜索编译命令行字符串。搜索日志中的那些命令字符串长度巨大,超过2300列ascii文本(由于几个-I和-W)。 使用以下正则表达式在日志文件中搜索编译命令行字符串

grep -E -e "^${TARGETCANONICAL}${COMPCMDPATT}"
在哪里

Used grep命令用于打印出与给定模式匹配的每一行,而无需对打印到grep输出的匹配输入行进行任何操作。Ubuntu是一个构建机器

日志文件中的每个编译命令字符串在几个点上包含多个后续空格(空格)的序列。例如:

-ftree-vectorize   -Wno-error=maybe-uninitialized
在grep(regex匹配)打印出来的行中,所有这些空白的原始序列都合并为一个空白,即空白。 空格的合并不是这里所期望的

可能的原因是什么

更新:
grep输出转到命令替换(bash扩展),其输出被分配给变量。然后使用echo打印出来,或者在复合条件命令中使用,这是我自己进行观察/调试的级别。观察到的现象的根本原因可能是在后续的命令扩展或分配中。

您的grep命令应该只匹配一行,而不应该修改该行。您的输出是直接来自grep,还是存储在变量中或通过管道传输到另一个过滤器?是的,这是我不想修改匹配行的意图。Q更新了有关grep命令调用上下文的更多详细信息。最好向我们显示实际命令,但如果您回显$variable,则需要在变量周围加双引号:回显“$variable”。是的,在grep输出后处理中缺少引号。
-ftree-vectorize   -Wno-error=maybe-uninitialized