36

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.

0

6 Answers 6

61
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.

4
  • 3
    The -e isn't necessary. piping whatever | sed G ought to do the trick.
    – frabjous
    Oct 15, 2010 at 2:25
  • @frabjous: Right, might as well leave off the -e since there we only need a single command argument. Oct 15, 2010 at 18:49
  • Can I give you like, +2? Nails it! Sep 28, 2017 at 17:40
  • but, it is only show in stdout, but not save it
    – biolinh
    Oct 18, 2017 at 12:20
10

Use awk to add an extra newline. This also lets you filter out things you don't want.

awk '{print $0,"\n"}' | less
7

Use sed and replace the whole line by itself plus one extra newline character:

grep foo /var/log/maillog | sed -e "s/^.*$/&1\n/"
1
  • 4
    A slightly simpler sed substitution would be 's/$/\n/', although @Chris Johnsen's 'G' command is even simpler.
    – camh
    Oct 15, 2010 at 5:05
3

Is this what you are after?

grep SPAM mail.log | while read -r line; do echo; echo $line; done

1
  • You will probably want to use read -r to avoid treating backslash characters as special. Oct 15, 2010 at 1:57
2

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.

0

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

2
  • 1
    Why cat and not cp?
    – KeithB
    Oct 15, 2010 at 13:21
  • sure cp would be easier and faster!... lol - I was reading the other answers dealing with grep and awk so I wrote it the cat way but I'm correcting that, thanks
    – laurent
    Oct 15, 2010 at 13:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.