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.
- 143
- 5
- 19,790
- 8
- 63
- 52
-
3The -e isn't necessary. piping `whatever | sed G` ought to do the trick. – frabjous Oct 15 '10 at 02: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
Use awk to add an extra newline. This also lets you filter out things you don't want.
awk '{print $0,"\n"}' | less
- 3,159
- 20
- 13
Use sed and replace the whole line by itself plus one extra newline character:
grep foo /var/log/maillog | sed -e "s/^.*$/&1\n/"
- 8,720
- 35
- 46
-
4A slightly simpler sed substitution would be 's/$/\n/', although @Chris Johnsen's 'G' command is even simpler. – camh Oct 15 '10 at 05:05
Is this what you are after?
grep SPAM mail.log | while read -r line; do echo; echo $line; done
- 539
- 2
- 6
- 17
-
You will probably want to use `read -r` to avoid treating backslash characters as special. – Chris Johnsen Oct 15 '10 at 01:57
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.
- 523
- 5
- 7
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
- 655
- 4
- 7
-
1
-
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