如何从文件中选择某些行(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
  • -n生成CHUNKS输出文件

CHUNKS作为

  • r/K/N使用循环分配,仅将 N 中的 Kth 输出到 stdout,而不分割行/记录

答案3

使用 GNU sed

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

与标准sed

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

使用1and 4in$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())

相关内容