I've got an input file like this:
line 1
line 2
line 3
line 4
line 5
line 6
I'd like to use awk to insert a blank line every few lines; for example, every two:
line 1
line 2
line 3
line 4
line 5
line 6
How can I get awk to put a blank line into my file every n lines?
A more "awk-ish" way to write smcameron's answer:
awk -v n=5 '1; NR % n == 0 {print ""}'
The "1;" is a condition that is always true, and will trigger the default action which is to print the current line.
awk '{ if ((NR % 5) == 0) printf("\n"); print; }'
for n == 5
, of course. Substitute whatever your idea of n
is.
awk '{print; if (FNR % 5 == 0 ) printf "\n";}' your_file
I guess 'print' should be before 'printf', and FNR is more accurate for your task.
More awkishness:
awk 'ORS=NR%5?RS:RS RS'
For example:
$ printf "%s\n" {1..12} | awk 'ORS=NR%5?RS:RS RS'
1
2
3
4
5
6
7
8
9
10
11
12
$ awk -v n=5 '$0=(!(NR%n))?"\n"$0:$0'
If you want to change 'n', please set the parameter 'n' by awk's -v option.