有没有办法限制ack匹配的行的长度?如果ack匹配,例如,缩小的javascript文件,它打印出的行可能非常大。我仍然希望它能够显示突出显示的匹配,但最好是在与elipses匹配之前和之后切换线:"... stuff match stuff ..."
。在the ack docs中没有看到任何结论。
我尝试用类似
的东西挖掘它ack pattern | awk '{print substr($0,1,200) }'
但awk
似乎正在剥离着色和格式化,这是不受欢迎的。我也试过(忍受我一秒钟):
ack pattern | ack pattern
看看我是否可以重新确认每一行并将其删除或其他内容,但这具有相同的格式问题。管道确认输出显然会删除换行符?
根据评论编辑:
也许这有助于解释我想要这个的主要原因。我用ack.vim搜索我的项目。我经常想通过我的javascript文件找到一个单词,比如“cookie”。我们在代码中对jQuery和其他缩小库进行了版本化,因此它们显示在ack结果中。由于这些文件是缩小的,因此很少有换行符,并且它在分割窗口中显示了一条巨大的线,我必须滚动过去。我几乎从不关心那场比赛,所以占用这么多空间很烦人。我可以将这些缩小的文件名添加到我的ackrc中以忽略但我不希望每次添加缩小的库时都不必添加新的文件名。 ack.vim repo上有an open issue。我想知道是否可以纯粹通过bash-fu来做。
答案 0 :(得分:3)
你可以:
-o
选项Show only the part of a line matching PATTERN
-l
选项Only print filenames containing matches
答案 1 :(得分:2)
如果你真正想要的是忽略缩小的Javascript文件,那么升级你的ack。 ack 1.96及更高版本忽略了缩小的JavaScript文件。
答案 2 :(得分:1)
ack在传输时巧妙地禁用了颜色,但您可以使用--color
覆盖它:
ack --color foo | cut -c1-80 | sed "s/$/\e[0;30m/"
(最后一个管道是重置颜色,以防在选择中间切割文本)
格式化有类似选项(--heading
,--break
)。