如果我对字符串进行普通操作ack
,我会得到一行包含文件名的行,然后是行号和匹配行,如下所示:
$> ack function
mymodule.file
8: function myfunction1() {
16: public function __construct( $protocol = 'ftp') {
36: public static function getSupportedProtocols() {
但是,当我ack
计算第二个字符串的结果时,这些行在一行上显示了更多信息:
$> ack function|ack test
mymodule.file:897:function mytest() {
我注意到在 grep 的结果时也会发生这种情况ack
。
各行信息如何缩减为一行?这是shell做的吗?
答案1
这是ack
它自己完成的。ack
检查其标准输出是否连接到终端,如果没有,则以不同的格式打印输出。我猜想选择这种格式是因为它更容易被为文本处理(如文本处理grep
或文本处理ack
本身)设计的应用程序处理。