터미널 출력의 라인 수


264

SO에서 이것을 찾을 수 없습니다. 터미널에서 다음 명령을 실행했습니다.

>> grep -Rl "curl" ./

키워드 컬이 발생하는 파일 목록이 표시됩니다. 파일 수를 세고 싶습니다. 내가 생각할 수있는 첫 번째 방법은 터미널에 나온 출력의 줄 수를 세는 것입니다. 어떻게해야합니까?


40
그렙 자체가 또한이 -c단지 수를 반환 플래그
EaterOfCode

답변:


475

( line count ) 스위치 를 wc사용하여 결과를 파이프하십시오 .-l

grep -Rl "curl" ./ | wc -l

1
나는 사용하고 grep "" -c있지만 이것은 훨씬 더 멋지다 :)
ninhenzo64

3
wc 로의 이러한 배관 트릭은 grep 출력뿐만 아니라 모든 출력에 적용됩니다. 예를 들어, git diff와 결합 될 수 있습니다.
Jason L.

1
이것이 왜 대답입니까? 일부 의견에서 언급했듯이 grep -c출력을 다른 프로그램에 파이핑하는 대신 빌드 인 기능을 사용해야합니다. 예를 들어 Word 이외의 다른 텍스트 편집기를 사용하여 Word 문서의 문자를 변경하지 않겠습니까?
Michael P

57

EaterOfCode의 의견을 여기에 답으로 넣으십시오.

grep 자체에도 카운트를 반환하는 -c 플래그가 있습니다.

따라서 명령과 출력은 다음과 같습니다.

$ grep -Rl "curl" ./ -c
24

편집하다:

이 답변은 더 짧을 수 있으므로 허용 된 답변 (을 사용하는 것)보다 좋아 보일 수 있습니다 wc. 나는 더 이상 이것에 동의하지 않습니다. 배관을 통해 라인 수를 세는 wc -l것이 다른 프로그램과 함께 사용할 때보 다 훨씬 유용하다는 것을 기억하고 싶습니다 grep.


5

마지막 줄이 줄 바꿈으로 끝나는 경우 'wc'로 파이핑하는 것이 더 나을 수 있습니다
.

예를 들면 다음과 같습니다.

$ echo "asd" | wc -l

반환 1

$ echo -n "asd" | wc -l

돌아올 것이다 0


그래서 내가 자주 사용하는 것은 grep <anything> -c

$ echo "asd" | grep "^.*$" -c
1

$ echo -n "asd" | grep "^.*$" -c
1

이것은 wc -l돌아 오는 것보다 현실에 더 가깝습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.