ack 中的文本重新格式化是如何发生的?

ack 中的文本重新格式化是如何发生的?

如果我对字符串进行普通操作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本身)设计的应用程序处理。

相关内容