21

次のような入力ファイルがあります。

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

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

4

5 に答える 5

26

smcameronの答えを書くためのより「ぎこちない」方法:

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

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

于 2009-06-11T16:04:18.193 に答える
18
awk '{ if ((NR % 5) == 0) printf("\n"); print; }'

n == 5もちろん、のために。あなたの考えが何であれ代用してくださいn

于 2009-06-10T18:39:34.460 に答える
7

もっとぎこちない:

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
于 2013-03-15T08:52:49.880 に答える
5
awk '{print; if (FNR % 5 == 0 ) printf "\n";}' your_file

「print」は「printf」の前にある必要があると思います.FNRはあなたのタスクに対してより正確です。

于 2009-06-23T02:26:49.687 に答える
2
$ awk -v n=5 '$0=(!(NR%n))?"\n"$0:$0'

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

于 2009-06-11T13:33:53.750 に答える