为什么我不能通过管道确认?

为什么我不能通过管道确认?

因此,我一直在尝试使用grepMercurial 日志中提取一些内容,并试图避免使用awk只是为了看看我是否可以在没有它的情况下完成,但失败了,因为既不grep也不egrep支持完整的现代正则表达式。

grep 会发生这种情况:

$   hg log <filename> | grep changeset
changeset:   3651:d23495ab1168
changeset:   2974:6aa71cb2c575
changeset:   2756:9dd7fb635678
changeset:   2532:d3ced9af4d6c
changeset:   2459:9d5f5553b851
changeset:   1835:4558836beed1
changeset:   1628:517d0239e830
changeset:   1486:114bce51254d
changeset:   1378:2b968e7fbd19
changeset:   1374:4e7772e48d00

这就是我想要的输出结果。但为了获得更好的正则表达式支持,我尝试使用ack, aaaand....什么都不做。我缺少什么?检查了一堆例子,发现我在这里所做的没有什么区别。

$  hg log <filename> | ack changeset
$ 

没有输出。

也许我误解了这个工具?egrep也没有得到足够的支持。我只是想用\s:(

答案1

在 ack 文档页面上看到了这个,也许会有帮助?

 --[no]filter                  Force ack to treat standard input as a pipe
                            (--filter) or tty (--nofilter)

答案2

尝试输入

awk '/changeset/ {print}'

答案3

聚会超级晚了,但 ack v3.3.1 管道工作正常。

$ git log | ack 'bar'
$ ack 'regex' log | ack 'bar'

我遇到这个问题是因为我需要运行一个复杂的正则表达式,而在时间紧迫的情况下我无法在一行中完成。

希望这对某人有帮助

答案4

ack是安装在基于 Debian 的发行版上的默认软件包。如果您在运行时看到类似这样的消息,ack -h那么您需要使用ack-grep或按照以下步骤操作http://beyondgrep.com/install/在 Debian 衍生发行版上重命名 ack-grep

尝试hg log <filename> | ack-grep changeset查看 ack-grep 是否安装正确。

相关内容