grep - 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 打印出来或在复合条件命令中使用 - 这是我自己进行观察/调试的级别。即使在随后的命令扩展或分配中,观察到的现象也可能是根本原因。
解决方案
推荐阅读
- excel - 在 Word 文档中从 Excel VBA 插入换行符
- firefox - Firefox 在哪里获取主页上的网站磁贴图标
- javascript - 如果存在另一个字符串,则替换部分字符串
- machine-learning - 如何检查决策树和朴素贝叶斯的准确性?
- javascript - Puppeteer 不显示第一个循环周期的结果
- git - 如何修复:找不到命令-Git Alias
- reactjs - React Materials UI - 如何同时关闭两个对话框
- java - 检测 Java 9+ 运行时模块
- bootstrap-vue - 使用范围槽的引导 vue 表组件中的自定义列
- c# - 什么是“滴答”?