I've been parsing through some log files and I've found that some of the lines are too long to display on one line so Terminal.app kindly wraps them onto the next line. However, I've been looking for a way to truncate a line after a certain number of characters so that Terminal doesn't wrap, making it much easier to spot patterns.
I wrote a small Perl script to do this:
#!/usr/bin/perl
die("need max length\n") unless $#ARGV == 0;
while (<STDIN>)
{
$_ = substr($_, 0, $ARGV[0]);
chomp($_);
print "$_\n";
}
But I have a feeling that this functionality is probably built into some other tools (sed?) that I just don't know enough about to use for this task.
So my question sort of a reverse question: how do I truncate a line of stdin WITHOUT writing a program to do it?
A Korn shell solution (truncating to 70 chars - easy to parameterize though):
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.
The usual way to do this would be
Golfed (for 5.10):
(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.)
Unless I'm missing the point, the UNIX "fold" command was designed to do exactly that:
Pipe output to:
Where LIMIT is the desired line width.