ファイルから特定の行(n、n+4、n+8、n+12...)を選択するには?

ファイルから特定の行(n、n+4、n+8、n+12...)を選択するには?

入力する:

1
hgh
h2b
h4h
2
ok
koko
lkopk
3
uh
ju
nfjvn
4

予想出力:

1
2
3
4

したがって、出力ファイルには、そのファイルの1番目、5番目、9番目、13番目の値を含めるだけです。どうすればいいですか?

答え1

AWKを使用:

awk '!((NR - 1) % 4)' input > output

これがどのように機能するかを調べることは、読者の練習問題として残されます。

答え2

split (GNU coreutils)の使用:

split -nr/1/4 input > output
  • -nCHUNKS出力ファイルの生成

CHUNKSそして

  • r/K/Nラウンドロビン割り当てを使用して、ライン/レコードを分割せずにNのK番目のみをstdoutに出力します。

答え3

GNUの使用sed:

sed '1~4!d' < input > output

標準sed:

sed -n 'p;n;n;n' < input > output

使用14変数$n$i

sed "$n~$i!d" # GNU only
awk -v n="$n" -v i="$i" 'NR >= n && (NR % i) == (n % i)'

答え4

楽しみのためのPythonバージョン:

with open('input.txt') as f:
    for i, line in enumerate(f.readlines()):
        if i%4 == 0:
            print(line.strip())

関連情報