How to truncate STDIN line length?

廉价感情. 提交于 2019-11-30 20:14:27

Pipe output to:

cut -b 1-LIMIT

Where LIMIT is the desired line width.

Another tactic I use for viewing log files with very long lines is to pipe the file to "less -S". The -S option for less will print lines without wrapping, and you can view the hidden part of long lines by pressing the right-arrow key.

Yanick

Not exactly answering the question, but if you want to stick with Perl and use a one-liner, a possibility is:

$ perl -pe's/(?<=.{25}).*//' filename

where 25 is the desired line length.

The usual way to do this would be

perl -wlne'print substr($_,0,80)'

Golfed (for 5.10):

perl -nE'say/(.{0,80})/'

(Don't think of it as programming, think of it as using a command line tool with a huge number of options.) (Yes, the python reference is intentional.)

A Korn shell solution (truncating to 70 chars - easy to parameterize though):

typeset -L70 line
while read line
do
  print $line
done

You can use a tied variable that clips its contents to a fixed length:

#! /usr/bin/perl -w

use strict;
use warnings
use String::FixedLen;

tie my $str, 'String::FixedLen', 4;

while (defined($str = <>)) {
    chomp;
    print "$str\n";
}

This isn't exactly what you're asking for, but GNU Screen (included with OS X, if I recall correctly, and common on other *nix systems) lets you turn line wrapping on/off (C-a r and C-a C-r). That way, you can simply resize your terminal instead of piping stuff through a script.

Screen basically gives you "virtual" terminals within one toplevel terminal application.

use strict;
use warnings
use String::FixedLen;

tie my $str, 'String::FixedLen', 4;

while (defined($str = <>)) {
    chomp;
    print "$str\n";
}

Unless I'm missing the point, the UNIX "fold" command was designed to do exactly that:

$ cat file
the quick brown fox jumped over the lazy dog's back

$ fold -w20 file
the quick brown fox
jumped over the lazy
 dog's back

$ fold -w10 file
the quick
brown fox
jumped ove
r the lazy
 dog's bac
k

$ fold -s -w10 file
the quick
brown fox
jumped
over the
lazy
dog's back
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!