在Linux中,如何截断命令行输出?


56

如果我grep -nr sumthin *在源代码目录中,它还会从缩小的JavaScript或CSS文件中弹出很长的行。我想每行只获取前80个字符。

例如,一个普通的grep给我这个:

css/style.css:21:   behavior: url("css/iepngfix.htc")
css/style-min.css:4:.arrow1{cursor:pointer;position:absolute;left:5px;bottom:10px;z-index:13;}.arrow2{cursor:pointer;position:absolute;right:5px;bottom:10px;z-index:13;}.calendarModule{z-index:100;}.calendarFooterContainer{height:25px;text-align:center;width:100%!important;z-index:15;position:relative;font-size:15px!important;padding:-2px 0 3px 0;clear:both!important;border-left:1px solid #CCC;border-right:1px  ... etc.

但我想得到的只是这个:

css/style.css:21:   behavior: url("css/iepngfix.htc")
css/style-min.css:4:.arrow1{cursor:pointer;position:absolute;left:5px;bottom:

什么Linux命令可以做到这一点?


“缩小”?这意味着什么?
Carf 2011年



这两个链接都指向我同一页面。
维克多

Answers:


80

天哪,我完全忘了cut

grep -nr sumthin * | cut -c -80

^绝招!> _ <


4
如果涉及转义序列或颜色代码,则该方法无效。例如git log --oneline --graph --color=always | cut -c -$COLUMNS
badp 2014年

1
我知道它并不能截断正好显示的80个字符,但是它仍然解决了我的问题:没有一行换行,所以您仍然只能看到每行的开头部分(这在我的特定用例中很重要,所以我可以看到的<file>:<linenumber>输出grep -n
Nikki Erwin Ramirez,2014年

1
长提交注释也可能会“破坏”示例命令的输出(如果未截断的话)。git log --oneline --graph --color=always | more将显示由包装文字打断的图形。i.imgur.com/X8G7SIV.png
Nikki Erwin Ramirez,

是的,这就是为什么我搜索这个问题开头为:)的原因
badp 2014年

5
如果目的只是为了视觉上看得很清楚(不将输出重定向到某个地方使用),那么less -S您想要的就是它。-S--chop-long-lines。基本上,它关闭了换行

5

除了cut可以使用之外fold(在某些情况下fmt)。
foldcoreutils包装的一部分。

$ echo "some very long long long text" | fold -w 5   # fold on 5 chars per line
some 
very 
long 
long 
long 
text

fold不会剪切剩余的文本,而是在下一行输出它。


感谢您这样做,将来可能会有用。就我而言,我真的很想剪切文本,因此输出的file:linenumber前缀grep是连续的,以便于目测。
妮基·欧文·拉米雷斯

1

虽然不完全是您要执行的操作,但是您可以awk用来打印一定数量的列。在这种情况下,可以将定界符指定为“:”。


但是,没有特定的定界符。我实际上是将输出切成特定的长度,以使其适合终端中的1行。
妮基·欧文·拉米雷斯

@Nikki然后切是您想要的。我相信您可以使用awk进行一些巧妙的操作来获得相同的结果,但实际上,剪切更容易。^ _-
Sardathrion
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.