如何截断由grep或ack返回的长匹配行

我想在通常有很长行的HTML文件上运行ack或grep。 我不想看到重复包裹的很长的线条。 但我确实希望看到围绕与正则表达式匹配的字符串的长整行的那一部分。 我如何使用Unix工具的任何组合来获得这个结果?


您可以使用grep选项-o ,可能会将您的模式更改为".{0,10}<original pattern>.{0,10}" ,以便查看其中的某些上下文:

       -o, --only-matching
              Show only the part of a matching line that matches PATTERN.

..或者-c

       -c, --count
              Suppress normal output; instead print a count of matching  lines
              for  each  input  file.  With the -v, --invert-match option (see
              below), count non-matching lines.

通过cut管理你的结果。 我还在考虑添加一个--cut开关,以便您可以说--cut = 80并且只能获得80列。


你可以少用一个寻呼机作为ack和排长队: ack --pager="less -S"这保留了长线,但将它留在一行而不是包装。 要查看更多线条,请使用箭头键向左/向右滚动。

我有以下别名设置为ack来执行此操作:

alias ick='ack -i --pager="less -R -S"' 
链接地址: http://www.djcxy.com/p/19653.html

上一篇: How to truncate long matching lines returned by grep or ack

下一篇: Quick unix command to display specific lines in the middle of a file?