web-dev-qa-db-ja.com

awkを使用してn行ごとに空白行を挿入するにはどうすればよいですか?

私はこのような入力ファイルを持っています:

line 1
line 2
line 3
line 4
line 5
line 6

Awkを使用して、数行ごとに空白行を挿入したいと思います。たとえば、2つおきに:

line 1
line 2

line 3
line 4

line 5
line 6

N行ごとにファイルに空白行を入れるようにawkを取得するにはどうすればよいですか?

19
frenk

Smcameronの答えを書くためのより「奇抜な」方法:

awk -v n=5 '1; NR % n == 0 {print ""}'

「1;」は常に真の条件であり、現在の行を出力するというデフォルトのアクションをトリガーします。

24
glenn jackman
awk '{ if ((NR % 5) == 0) printf("\n"); print; }'

ために n == 5、 もちろん。 nのアイデアが何であれ置き換えてください。

18
smcameron

もっとぎこちない:

awk 'ORS=NR%5?RS:RS RS'

例えば:

$ printf "%s\n" {1..12} | awk 'ORS=NR%5?RS:RS RS'
1
2
3
4
5

6
7
8
9
10

11
12
3
Scrutinizer
awk '{print; if (FNR % 5 == 0 ) printf "\n";}' your_file

'print'は 'printf'の前にあるべきだと思います、そしてFNRはあなたのタスクに対してより正確です。

3
Joyer
$ awk -v n=5 '$0=(!(NR%n))?"\n"$0:$0'

'n'を変更したい場合は、awkの-vオプションでパラメーター 'n'を設定してください。

1
Hirofumi Saito