%EB%B2%88%EC%A7%B8%20%EC%9D%BC%EC%B9%98%20%ED%95%AD%EB%AA%A9%EC%9D%84%20%EC%9D%B8%EC%87%84%ED%95%A9%EB%8B%88%EB%8B%A4..png)
grep이 파일의 첫 번째 N 일치 항목을 무시하고 (N+1) 번째 일치 항목과 그 뒤의 모든 k 줄을 인쇄한 다음 종료하도록 하려면 어떻게 해야 합니까?
답변1
결과를 다음으로 파이프하면 됩니다.tail(1)
. 예를 들어, N
10이면 tail +11
처음 10개 일치 항목을 건너뛰는 데 사용합니다.
grep pattern file | tail +11
답변2
다음의 대체 솔루션 awk
:
awk '/pattern/ { found++ } found > N && printed <= K { print; printed++ }' file
더 읽기 쉽게:
awk '
# Initialize to zero for clarity
BEGIN {
found = 0
printed = 0
}
# Check for a pattern match
/pattern/ {
found++
# Found one match
}
# Check if it's the right time to print
found > N && printed <= K {
print
printed++
# Printed once
}' file
pattern
필요에 따라 , N
및 를 입력했는지 확인하세요 K
.
첫 번째 블록은 패턴이 발견될 때마다 추적합니다. 임계값 을 통과하면 N
두 번째 블록이 각 줄을 인쇄하기 시작합니다. 두 번째 블록은 K
임계값에 도달 하면 인쇄를 중지합니다 .
답변3
당신이 사용할 수있는awk
awk 'd && k--&&k>=0; c>=3 && /pattern/{d=1;k=2} /pattern/{c++};' file
First는 패턴과 일치할 때마다 값을 /3/{c++}
증가시킵니다 c
. 예를 들어 3개에 도달 하면 c
플래그( d
)를 설정하고 그 뒤의 줄 수( k=2
)를 설정합니다. 값보다 크거나 작 으면 d && k--&&k>=0
해당 줄을 인쇄합니다.k
0
2
답변4
grep 'PATTERN' FILENAME | tail -n +M
M
N+1은 어디에 있나요?