일치하는 모든 파일 표시

일치하는 모든 파일 표시

grep --before-context 5게임 시작 전 5줄을 보여주세요.

경기 전에는 모든 것을 보여주고 싶다.
이것은 grep --before-context 99999999효과가 있지만 그다지 전문적이지는 않습니다.

일치하는 모든 파일을 표시하는 방법은 무엇입니까?

답변1

이것에 더 좋습니다.

그냥 해:

sed '/PATTERN/q' FILE

작동 방식은 다음과 같습니다.

각 행에 대해 다음과 일치하는지 확인합니다 /PATTERN.

  • 그렇다면 인쇄하고 종료합니다.
  • 그렇지 않으면 인쇄합니다.

이것은 일단 보고 나면 PATTERN종료되기 때문에 가장 효율적인 솔루션입니다. 그렇지 않은 경우 qsed는 파일에 대한 작업을 수행하지 않고 파일의 나머지 부분을 계속 읽습니다. 대용량 파일의 경우에는 차이가 있을 수 있습니다.

이 트릭은 다음을 시뮬레이션하는 데에도 사용할 수 있습니다 head.

sed 10q FILE

답변2

일치 항목을 포함하여 최대 인쇄:

awk '{print} /pattern/ {exit}' filename
sed '/pattern/q' filename

일치 항목을 포함하지 않고 최대 인쇄:

awk '/pattern/ {exit} {print}' filename
sed '/pattern/Q' filename

답변3

sedgrep의 대부분의 기능을 대체할 수 있습니다.

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

이 명령이 스크립트에서 사용된다면 더 우아한(그리고 아마도 더 효율적인) 솔루션을 찾을 것입니다. 이것이 일회성 명령이거나 일회성 스크립트라면 상관 없습니다.

관련 정보