![n行のグループごとに行範囲を削除する方法は? [コピー]](https://linux33.com/image/129538/n%E8%A1%8C%E3%81%AE%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%81%94%E3%81%A8%E3%81%AB%E8%A1%8C%E7%AF%84%E5%9B%B2%E3%82%92%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%81%AF%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
次のようなファイルから始めたいです。
1
2
3
4
5
1
2
3
4
5
1
2
3
4
5
次のように、各5セットのうち最後の3つのみが返されます。
3
4
5
3
4
5
3
4
5
次のコードを使用して最初の2つを正常に取得しました。
awk -vn=2 -vm=5 'NR<=i{next}; (NR-i)%m==1{c=1}; c++<=n
しかし、最後のグループ化で同じことをするのに問題があります。
答え1
これらの操作は、モジュラー演算を使用する方が簡単です。
awk '(NR-2)%5 && (NR-1)%5' file
3
4
5
3
4
5
3
4
5
あるいは、GNU sedのn~m
(「nはmをスキップします」)表記を使用します。
sed '1~5d;2~5d' file