답변:
awk 'NR % 50 == 15 || NR % 50 == 25'
확실한 휴대용 방법이 될 것입니다.
GNU sed
대안에 주목하십시오 :
sed '15~50b;25~50b;d'
any로 sed
언제든지 다음을 수행 할 수 있습니다.
sed -n 'n;n;n;n;n;n;n;n;n;n;n;n;n;n;p;n;n;n;n;n;n;n;n;n;n;p;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n'
(다음 줄을 14 번, 인쇄, 다음 줄을 10 번, 인쇄, 다음 줄을 25 번, 다음 사이클로 다시 가져옵니다 (50 행을 만들기 위해 누락 된 추가 줄을 가져옵니다)).
와 perl
1) awk
솔루션과 유사하게 $.
변수 상점 행 번호
$ seq 135 | perl -ne 'print if $.%50==15 || $.%50==25'
15
25
65
75
115
125
2) 연장하기 쉬운 라인 번호 목록을 확인하십시오.
$ seq 135 | perl -ne 'print if grep {$_==$.%50} (15,25)'
15
25
65
75
115
125
$ seq 135 | perl -ne 'print if grep {$_==$.%50} (15,25,32)'
15
25
32
65
75
82
115
125
132
목록을 사용 하려는 Sundeep의 아이디어 를 기반으로 awk를 사용하는 또 다른 방법 은 다음과 같습니다.
awk 'BEGIN { a[15] a[25] }; NR % 50 in a'
a
인쇄하려는 줄을 기준으로 배열에서 키를 설정하십시오 . NR % 50
배열의 키 중 하나와 일치하는 행을 인쇄 하십시오.
성능에 대한 정보를 제공하기 위해이 접근법의 시간을 정하고 다른 답변과 비교하여 평균 user
3 번의 실행 시간을 보냈습니다.
0.276 초
$ time awk 'BEGIN { a[15] a[25] }; NR % 50 in a' <(seq 1000000) > /dev/null
0.374 초
$ time awk 'NR % 50 == 15 || NR % 50 == 25' <(seq 1000000) > /dev/null
0.384 초
$ time perl -ne 'print if $.%50==15 || $.%50==25' <(seq 1000000) > /dev/null
0.542 초
$ time perl -ne 'print if grep {$_==$.%50} (15,25)' <(seq 1000000) > /dev/null