
파일 시작 부분부터 패턴의 n번째 발생까지 줄을 생략하는 명령줄 도구(awk, sed 등) 명령을 찾으세요. 즉, n번째 패턴 발생부터 파일 끝까지만 인쇄합니다. 한 줄에 하나의 일치 항목이 반드시 패턴으로 시작되는 것은 아니라고 가정합니다.
예를 들어 파일 시작 부분부터 두 번째 부분까지 다음을 생략합니다 foo
.
something
abc foo1
maybe something else
foo2 -this line and anything before is gone-
maybe not
foo3
something
원하는 결과:
maybe not
foo3
something
행의 n번째 발생을 포함/제외하는 데 대한 보너스 포인트입니다.
답변1
도착하다들어오지 못하게 하다패턴이 n번째 나타남
awk -v 'n=3' 'NR == 1, /pattern/ && !--n {next}; 1'
( 3
원하는 발생 횟수(귀하의 경우 2)와 pattern
실제 패턴( foo
귀하의 경우)으로 바꾸십시오.)
예:
$ seq 30 | awk -v 'n=3' 'NR == 1, /6/ && !--n {next}; 1'
27
28
29
30
도착하다포함하다패턴이 n번째 나타남
awk -v 'n=3' '/pattern/ && !--n, 0'
예:
$ seq 30 | awk -v 'n=3' '/6/ && !--n, 0'
26
27
28
29
30
답변2
% perl -ne 'BEGIN{$NTH=2;$p=0} print if $p; /foo/ && $NTH--; $p=1 if !$NTH' input
maybe not
foo3
something
NTH
횟수는 어디에 있으며, 일치할 때 감소하도록 인쇄하고 NTH
충분히 감소하면 인쇄를 활성화하는 플래그가 필요합니다.NTH
print
궁극적으로 원하는 것을 포착하려면 끝으로 이동하십시오 foo
.