我想过滤一个grep命令的结果,例如:
myRepo/path/to/my/file.php:123: error_log(' - myError');
如果我做了以下,它的作品。
echo“myRepo / path / to / my / file.php:123:error_log(' – myError');” | awk -F':''{print $ 1}'
但是当它是grep命令的结果时,它会输出整行,为什么?
grep -rn“myError”| awk -F':''{print $ 1}'
我有CentOS 6与Awk 3.1.7,bash 4.1.2
你的awk分隔符是:和一个空格,但我猜测你的代码是使用tab缩进(因此不匹配只是一个空格)。
您可以尝试将grep更改为以下内容(这会导致awk匹配:以及制表符)。
grep -rn "myError"|awk -F':\t' '{ print $1 }'
这对我来说在slackware linux上使用bash 4.3.46和awk 4.1.3。
尝试这个:
grep -rn“myError”| awk -F':[\ t] *''{print $ 1}'