長いファイルで選択した行数を繰り返し印刷するには? [コピー]

長いファイルで選択した行数を繰り返し印刷するには? [コピー]

5、6、8、9行をスキップして1、2、3、4、7行を印刷し、ファイルの終わりまでパターンを繰り返すことを望みます。

入力例:

Line 1
Line 2
Line 3
Line 4
Line 5
Line 6
Line 7
Line 8
Line 9
Line 10
Line 11
Line 12
Line 13
Line 14
Line 15
Line 16
Line 17
Line 18

希望の出力:

Line 1
Line 2
Line 3
Line 4
Line 7
Line 10
Line 11
Line 12
Line 13
Line 16

Solaris 10、KSHを使用します。 nawkまたはsedソリューションが欲しい

答え1

私が正しく理解したなら、9行ごとに繰り返されるパターンを探しているのです。努力する:

$ awk '{r=NR % 9} r>0 && (r<=4 || r==7)' input
Line 1
Line 2
Line 3
Line 4
Line 7
Line 10
Line 11
Line 12
Line 13
Line 16

どのように動作しますか?

まず、モジュロ9にr=NR % 9設定された行番号を使用します。r次に、9つの行のうち保持する行を選択しますr>0 && (r<=4 || r==7)

関連情報