grep --before-context 5
게임 시작 전 5줄을 보여주세요.
경기 전에는 모든 것을 보여주고 싶다.
이것은 grep --before-context 99999999
효과가 있지만 그다지 전문적이지는 않습니다.
일치하는 모든 파일을 표시하는 방법은 무엇입니까?
답변1
옆이것에 더 좋습니다.
그냥 해:
sed '/PATTERN/q' FILE
작동 방식은 다음과 같습니다.
각 행에 대해 다음과 일치하는지 확인합니다 /PATTERN
.
- 그렇다면 인쇄하고 종료합니다.
- 그렇지 않으면 인쇄합니다.
이것은 일단 보고 나면 PATTERN
종료되기 때문에 가장 효율적인 솔루션입니다. 그렇지 않은 경우 q
sed는 파일에 대한 작업을 수행하지 않고 파일의 나머지 부분을 계속 읽습니다. 대용량 파일의 경우에는 차이가 있을 수 있습니다.
이 트릭은 다음을 시뮬레이션하는 데에도 사용할 수 있습니다 head
.
sed 10q FILE
답변2
일치 항목을 포함하여 최대 인쇄:
awk '{print} /pattern/ {exit}' filename
sed '/pattern/q' filename
일치 항목을 포함하지 않고 최대 인쇄:
awk '/pattern/ {exit} {print}' filename
sed '/pattern/Q' filename
답변3
sed
grep의 대부분의 기능을 대체할 수 있습니다.
sed -n '1,/<pattern>/ p' <file>
이는 패턴이 일치할 때까지 첫 번째 줄부터 인쇄를 시작하는 것을 의미합니다.
몇 가지 범위 예
sed -n '/<pattern>/,$ p' <file> # from pattern to end of file
sed -n '/<pattern1>/,/<pattern2>/ p' <file> # from pattern1 to pattern2
답변4
일상 업무에 필요한 기본 도구만 기억하고 덜 우아하고 덜 효율적인 솔루션에 만족하려는 사람들을 위해:
head -n $(grep -n pattern filename | cut -d: -f1) filename
이 명령이 스크립트에서 사용된다면 더 우아한(그리고 아마도 더 효율적인) 솔루션을 찾을 것입니다. 이것이 일회성 명령이거나 일회성 스크립트라면 상관 없습니다.