26

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.

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

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

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

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

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

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

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. – Chris Johnsen Oct 15 '10 at 1:57
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

  • 1
    Why cat and not cp? – KeithB Oct 15 '10 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 '10 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.