截断stdin行长度?

Kyl*_*nin 7 perl truncate cut

我一直在解析一些日志文件,我发现有些行太长而无法显示在一行上,所以Terminal.app将它们包装到下一行.但是,我一直在寻找一种方法来截断一定数量的字符之后的一行,以便终端不会换行,从而更容易发现模式.

我写了一个小的Perl脚本来做到这一点:

#!/usr/bin/perl

die("need max length\n") unless $#ARGV == 0;

while (<STDIN>)
{
    $_ = substr($_, 0, $ARGV[0]);
    chomp($_);
    print "$_\n";
}
Run Code Online (Sandbox Code Playgroud)

但我有一种感觉,这个功能可能内置于其他一些工具(sed?),我只是不知道该用于此任务.

所以我的问题是一个相反的问题:如何在没有编写程序的情况下截断一行stdin?

And*_*ico 12

管道输出到:

cut -b 1-LIMIT
Run Code Online (Sandbox Code Playgroud)

LIMIT是所需的线宽.

  • 注意:这将计算字节数.既然他要求人物,为什么不``-c`? (3认同)

And*_*ico 11

我用来查看具有很长行的日志文件的另一种策略是将文件传递给"less -S".less的-S选项将打印行而不包装,您可以通过按右箭头键查看长行的隐藏部分.