grep에서 반환되는 결과 수를 제한하려면 어떻게 해야 합니까?
저는 grep에서 최대 10줄이라고 말하고 싶습니다.
나는 내 컴퓨터가 열심히 작동하는 것을 원하지 않습니다.나는 grep에 의해 10개의 결과가 발견된 후에 그것을 멈추기를 원합니다.가능합니까?
그-m
선택사항은 아마도 당신이 찾고 있는 것입니다.
grep -m 10 PATTERN [FILE]
부터man grep
:
-m NUM, --max-count=NUM
Stop reading a file after NUM matching lines. If the input is
standard input from a regular file, and NUM matching lines are
output, grep ensures that the standard input is positioned to
just after the last matching line before exiting, regardless of
the presence of trailing context lines. This enables a calling
process to resume a search.
참고: 지정된 일치 항목 수가 발견되면 grep이 파일 읽기를 중지합니다!
또 다른 옵션은 헤드만 사용하는 것입니다.
grep ...parameters... yourfile | head
이렇게 하면 전체 파일을 검색할 필요가 없습니다. 처음 10개의 일치하는 줄이 발견되면 파일이 중지됩니다.이 방법의 또 다른 장점은 -o 옵션과 함께 grep를 사용하더라도 10개 이하의 행을 반환한다는 것입니다.
예를 들어 파일에 다음 행이 포함되어 있는 경우:
112233
223344
123123
그러면 출력의 차이는 다음과 같습니다.
grep -o '1' 파일 | head -n21112 grep -m2 -o '1'. 111212
사용.head
원하는 결과를 2개만 반환하는 반면 -m2는 3개를 반환합니다.
어색한 접근:
awk '/pattern/{print; count++; if (count==10) exit}' file
2가지 사용 사례:
- 파일당 n개의 결과가 아니라 전체적인 결과만 원합니다.
grep -m 2
파일당 최대 발생 횟수입니다. - 자주 사용합니다.
git grep
그것은 필요하지 않습니다.-m
이러한 시나리오에서 좋은 대안은 다음과 같습니다.grep | sed 2q
모든 파일에서 처음 두 개의 항목을 grep합니다.sed 설명서: https://www.gnu.org/software/sed/manual/sed.html
Emily의 답변(2020년 중반)은 다음과 같이 언급합니다.
자주 사용합니다.
git grep
그것은 필요하지 않습니다.-m
.
사실, 2022년 중반에는 다음과 같습니다.
Git 2.38(Q3220)을 사용하는 ""git grep -m<max-hits>
(man)는 파일당 표시되는 히트 수를 제한하는 방법입니다.
그것은git grep -m
의 대안으로 사용될 수 있습니다.grep
Git 저장소에서 수행할 경우.
카를로스 로페스()00xc
의 커밋 68437ED(2022년 6월 22일)를 참조하십시오.
(주니오 C 하마노에 의해 합병 -- -- 8c4f65e, 2022년 7월 13일 커밋)
grep
--max-count 명령줄 옵션 추가사인 오프 바이: 카를로스 로페즈 00xc@protonmail.com
이 패치는 GNU grep(1)의 패치와 유사한 명령줄 옵션을 추가합니다.
-m
/--max-count
사용자가 이미 익숙해져 있을 수 있습니다.이렇게 하면 다음과 같은 다른 옵션의 기능을 유지하면서 출력에 표시되는 일치 항목의 양을 제한할 수 있습니다.
-C
(코드 컨텍스트 표시) 또는-p
(함수를 포함하는 표시), 셸 파이프라인으로는 수행하기 어려울 수 있습니다(예:head(1)
).
git grep
이제 관리 페이지에 다음 항목이 포함됩니다.
-m <num>
--max-count <num>
파일당 일치 항목 수를 제한합니다.
를
-v
또는--invert-match
옵션을 선택하면 검색이 지정된 수의 검색을 중지할 수 있습니다.
- 값이 -1이면 결과가 무제한으로 반환됩니다(기본값).
- 값 0은 0이 아닌 상태로 즉시 종료됩니다.
꼬리 사용:
#dmesg
...
...
...
[132059.017752] cfg80211: (57240000 KHz - 65880000 KHz @ 2160000 KHz), (N/A, 4000 mBm)
[132116.566238] cfg80211: Calling CRDA to update world regulatory domain
[132116.568939] cfg80211: World regulatory domain updated:
[132116.568942] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[132116.568944] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[132116.568945] cfg80211: (2457000 KHz - 2482000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[132116.568947] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
[132116.568948] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[132116.568949] cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[132120.288218] cfg80211: Calling CRDA for country: GB
[132120.291143] cfg80211: Regulatory domain changed to country: GB
[132120.291146] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[132120.291148] cfg80211: (2402000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[132120.291150] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[132120.291152] cfg80211: (5250000 KHz - 5330000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[132120.291153] cfg80211: (5490000 KHz - 5710000 KHz @ 40000 KHz), (N/A, 2700 mBm)
[132120.291155] cfg80211: (57240000 KHz - 65880000 KHz @ 2160000 KHz), (N/A, 4000 mBm)
alex@ubuntu:~/bugs/navencrypt/dev-tools$ dmesg | grep cfg8021 | head 2
head: cannot open ‘2’ for reading: No such file or directory
alex@ubuntu:~/bugs/navencrypt/dev-tools$ dmesg | grep cfg8021 | tail -2
[132120.291153] cfg80211: (5490000 KHz - 5710000 KHz @ 40000 KHz), (N/A, 2700 mBm)
[132120.291155] cfg80211: (57240000 KHz - 65880000 KHz @ 2160000 KHz), (N/A, 4000 mBm)
alex@ubuntu:~/bugs/navencrypt/dev-tools$ dmesg | grep cfg8021 | tail -5
[132120.291148] cfg80211: (2402000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[132120.291150] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[132120.291152] cfg80211: (5250000 KHz - 5330000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[132120.291153] cfg80211: (5490000 KHz - 5710000 KHz @ 40000 KHz), (N/A, 2700 mBm)
[132120.291155] cfg80211: (57240000 KHz - 65880000 KHz @ 2160000 KHz), (N/A, 4000 mBm)
alex@ubuntu:~/bugs/navencrypt/dev-tools$ dmesg | grep cfg8021 | tail -6
[132120.291146] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[132120.291148] cfg80211: (2402000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[132120.291150] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[132120.291152] cfg80211: (5250000 KHz - 5330000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[132120.291153] cfg80211: (5490000 KHz - 5710000 KHz @ 40000 KHz), (N/A, 2700 mBm)
[132120.291155] cfg80211: (57240000 KHz - 65880000 KHz @ 2160000 KHz), (N/A, 4000 mBm)
alex@ubuntu:~/bugs/navencrypt/dev-tools$
언급URL : https://stackoverflow.com/questions/5013151/how-do-i-limit-the-number-of-results-returned-from-grep
'programing' 카테고리의 다른 글
Bash를 사용하여 명령 출력을 열로 분할하시겠습니까? (0) | 2023.05.23 |
---|---|
오류 /node_hostname/node-hostname:명령 실패 (0) | 2023.05.23 |
Azure 함수 이름 바꾸기 (0) | 2023.05.23 |
원격(원본) Git 저장소의 변경 사항을 확인하는 방법 (0) | 2023.05.23 |
Azure 포털에서 Azure 가상 시스템 이름 변경 (0) | 2023.05.23 |