6

awk と sed を使用して一連の行を取得する方法を知っています。また、awk と sed を使用して n 行ごとに出力する方法も知っています。

ただし、2つを組み合わせる方法がわかりません。

たとえば、1780000 行のファイルがあります。

17800行ごとに、17800行とその後の2行を印刷したいと思います。

したがって、1780000 行のファイルがあり、1 から始まり 1780000 で終わる場合、次のように出力されます。

1
2
3
17800
17801
17802
35600
35601
35602
# ... and so on.

awk、sed、または他のUNIXコマンドを使用して、n番目の間隔ごとに行の範囲を取得する方法を知っている人はいますか?

4

2 に答える 2

2
$ cat file
1
2
3
4
5
6
7
8
9
10

$ awk '!(NR%3)' file
3
6
9

$ awk -v intvl=3 -v delta=2 '!(NR%intvl){print "-----"; c=delta} c&&c--' file
-----
3
4
-----
6
7
-----
9
10

$ awk -v intvl=4 -v delta=2 '!(NR%intvl){print "-----"; c=delta} c&&c--' file
-----
4
5
-----
8
9

$ awk -v intvl=4 -v delta=3 '!(NR%intvl){print "-----"; c=delta} c&&c--' file
-----
4
5
6
-----
8
9
10
于 2013-04-23T02:53:02.663 に答える