파일에서 특정 줄(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())

관련 정보