シェルからN行目ごとに削除

シェルからN行目ごとに削除

N行次の行を削除するためにawkを使用しようとしていますが、正しく実行できないようです。ファイル形式はこんな感じ

YYYYYY
XXXXXX
XXXXXX
YYYYYY
XXXXXX
XXXXXX

実際の例は

office3
3
1
office3
6
1
office3
6
3
office3
1
1

行YYまたは「オフィス」行を削除する方法。内容に関係なく、2行ごとに削除する必要があります。

答え1

GNU sedがある場合は、アドレス表記を使用できますn~mnスキップ)。m

sed '1~3d' file

最初の行から3行ずつ削除します。

答え2

モジュロ行のみを選択しNてください。awk

awk '!(NR%2)' file

または

awk 'NR%3==0' file

これはNR、これまでに処理された行数を表します。


特定の場合(すべての行を削除Y):

$ echo 'YYYYYY
XXXXXX
XXXXXX
YYYYYY
XXXXXX
XXXXXX' | awk '!(NR%3==1)'
XXXXXX
XXXXXX
XXXXXX
XXXXXX

関連情報