(실제로) 및 를 grep
결합하는 방법이나 다른 방법이 있습니까 ? 즉, 오히려grep -v
grep -A
포함하다문자열 뒤의 모든 x 줄,들어오지 못하게 하다모든 것.
grep 스위치를 잊어버린 사람들을 위한 빠른 알림:
cat file.txt | grep -v blah
일반 grep과 달리 'blah'를 필터링하면
cat file.txt | grep -A7 foo
'foo'가 발생할 때마다 7줄이 표시됩니다
(예, 여기서는 필요하지 않다는 것을 알고 있습니다 cat
. 하지만 더 읽기 쉽습니다. grep
여러 명령문을 함께 연결하여 이 작업을 수행 하는 경우 .)
그냥 그렇게 말하면
cat file.txt | grep -A100 bar | grep -vA100 foo
안 돼요. "Working"은 "bar"와 일치하는 줄과 "foo"와 일치하는 줄 사이의 모든 내용(최대 100줄)을 표시하도록 정의됩니다.
답변1
bar
sed를 사용하여 a에서 a로 모든 청크를 추출하는 쉬운 방법이 있습니다 .foo
sed -n '/bar/,/foo/p'
아니면 awk를 사용하세요:
awk '/bar/, /foo/'
청크를 자르려면 조금 더 복잡합니다(awk에서는, sed에서는 훨씬 더 복잡합니다). 해결책은 다음과 같습니다.
awk -vmax_lines_per_chunk=100 '
/bar/ {n=max_lines_per_chunk}
/foo/ {if (n) print; n=0}
n {--n; print}
'