我想过滤 grep 命令的结果,例如:
myRepo/path/to/my/file.php:123: error_log(' - myError');
如果我执行以下操作,它会起作用。
回声“myRepo/path/to/my/file.php:123:error_log('-myError');” | awk -F': ''{打印 $1}'
但是当它是 grep 命令的结果时,它会输出整行,为什么?
grep -rn "我的错误" | awk -F': ''{打印 $1}'
我有 CentOS 6 和 Awk 3.1.7,bash 4.1.2
您的 awk 分隔符是一个 : 和一个空格,但我猜您的代码正在使用制表符进行缩进(因此仅在空格上不匹配)。
您可以尝试将您的 grep 更改为以下内容(这会导致 awk 匹配 : 和制表符)。
这适用于我在 slackware linux 上使用 bash 4.3.46 和 awk 4.1.3。
尝试这个: