Mail logs are incredibly difficult to read. How could I output a blank line between each line printed on the command line? For example, say I'm grep-ing the log. That way, multiple wrapped lines aren't being confused.
6 Answers
sed G
# option: g G Copy/append hold space to pattern space.
G
is not often used, but is nice for this purpose. sed maintains two buffer spaces: the “pattern space” and the “hold space”. The lines processed by sed usually flow through the pattern space as various commands operate on its contents (s///
, p
, etc.); the hold space starts out empty and is only used by some commands.
The G
command appends a newline and the contents of the hold space to the pattern space. The above sed program never puts anything in the hold space, so G
effectively appends just a newline to every line that is processed.
-
3The -e isn't necessary. piping
whatever | sed G
ought to do the trick.– frabjousCommented Oct 15, 2010 at 2:25 -
@frabjous: Right, might as well leave off the
-e
since there we only need a single command argument. Commented Oct 15, 2010 at 18:49 -
-
Use awk to add an extra newline. This also lets you filter out things you don't want.
awk '{print $0,"\n"}' | less
Use sed and replace the whole line by itself plus one extra newline character:
grep foo /var/log/maillog | sed -e "s/^.*$/&1\n/"
-
4A slightly simpler sed substitution would be 's/$/\n/', although @Chris Johnsen's 'G' command is even simpler.– camhCommented Oct 15, 2010 at 5:05
Pipe |
any output to:
sed G
Example:
ls | sed G
If you man sed
you will see
G
Append's a newline character followed by the contents of the hold space to the pattern space.
Is this what you are after?
grep SPAM mail.log | while read -r line; do echo; echo $line; done
-
You will probably want to use
read -r
to avoid treating backslash characters as special. Commented Oct 15, 2010 at 1:57
If it's for more than just have look, I prefer to send them to a text file and open with a text editor so you can set the lines to wrap or not and do searches easily... and delete the unwanted lines and so on without having to type a lot of commands.
cat file.log > log.txt
and gedit log.txt
or a terminal editor like nano
Edit: or cp file.log log.txt
wich is of course easier and faster... thanks to KeithB comment
-
1
-
sure
cp
would be easier and faster!... lol - I was reading the other answers dealing withgrep
andawk
so I wrote it thecat
way but I'm correcting that, thanks– laurentCommented Oct 15, 2010 at 13:49