Tuesday, November 28, 2006
grep 명령] 찾은 문자열/단어 개수 출력, 행의 개수 출력: Count of String, Linux Unix
grep 명령어에서, 찾은 문자열의 개수를 출력하려면 소문자로
-c
옵션을 붙이면 됩니다. 그런데 실은 문자열의 개수가 아니라 그 문자열이 포함된 행의 개수입니다.
(문자열이나, 정규식에 매치되는 모든 단어의 개수를 구하는 방법은 여기에 있습니다: ▶▶ Perl/펄] 파일 속의 문자열 개수 세기; Count All (grep 확장 스크립트))
테스트용으로 사용할 텍스트 파일 2개:
0.txt 파일의 내용:
test.txt 파일의 내용:
0.txt 라는 파일에는 foo 라는 문자열이 1개 있고
test.txt 라는 파일에는 foo 라는 문자열이 8개 있습니다.
그냥 실행하면 다음의 첫번째 실행 결과처럼, 찾은 행 자체가 출력됩니다.
-c 옵션을 붙이면 찾은 회수(행의 개수)를 숫자로 표시합니다.
test.txt 파일에 foo 라는 단어가 8개 있지만, 3개로 나왔습니다. 3개의 행 속에서 foo 가 발견되었다는 뜻입니다.
정확한 foo 의 숫자를 세기 위해서는 역시 Perl 스크립트로 세어야 하더군요: ▶▶ Perl/펄] 파일 속의 문자열 개수 세기; Count All (grep 확장 스크립트)
단어 수, 200자 원고지 장수, 줄 수 계산기: ▶▶ 단어수 세기, 200자 원고지 매수 계산, 줄수 행 개수; Word Counter
-c
옵션을 붙이면 됩니다. 그런데 실은 문자열의 개수가 아니라 그 문자열이 포함된 행의 개수입니다.
(문자열이나, 정규식에 매치되는 모든 단어의 개수를 구하는 방법은 여기에 있습니다: ▶▶ Perl/펄] 파일 속의 문자열 개수 세기; Count All (grep 확장 스크립트))
grep: 특정 문자열이 있는 행의 개수 세기 예제
테스트용으로 사용할 텍스트 파일 2개:
0.txt 파일의 내용:
foo
test.txt 파일의 내용:
foo
foo bar foo foo foo FOO
Foofoo
122 22 11 1000000000
142
771
foo bar foo foo foo FOO
Foofoo
122 22 11 1000000000
142
771
0.txt 라는 파일에는 foo 라는 문자열이 1개 있고
test.txt 라는 파일에는 foo 라는 문자열이 8개 있습니다.
그냥 실행하면 다음의 첫번째 실행 결과처럼, 찾은 행 자체가 출력됩니다.
-c 옵션을 붙이면 찾은 회수(행의 개수)를 숫자로 표시합니다.
D:\Z>grep 'foo' *.txt
0.txt:foo
test.txt:foo
test.txt:foo bar foo foo foo FOO
test.txt:Foofoo
D:\Z>grep -c 'foo' *.txt
0.txt:1
test.txt:3
D:\Z>
0.txt:foo
test.txt:foo
test.txt:foo bar foo foo foo FOO
test.txt:Foofoo
D:\Z>grep -c 'foo' *.txt
0.txt:1
test.txt:3
D:\Z>
test.txt 파일에 foo 라는 단어가 8개 있지만, 3개로 나왔습니다. 3개의 행 속에서 foo 가 발견되었다는 뜻입니다.
정확한 foo 의 숫자를 세기 위해서는 역시 Perl 스크립트로 세어야 하더군요: ▶▶ Perl/펄] 파일 속의 문자열 개수 세기; Count All (grep 확장 스크립트)
단어 수, 200자 원고지 장수, 줄 수 계산기: ▶▶ 단어수 세기, 200자 원고지 매수 계산, 줄수 행 개수; Word Counter
tag: linux
리눅스 Linux | 유닉스 Unix | 시그윈 Cygwin
tag: perl
Perl | 펄 프로그래밍
-c 옵션을 사용하여 나오는 결과값을 변수에 저장할 수 있는 방법이 있나요?
명령 전체를 백틱 문자(`)로 감싼 후에
변수명(여기서는 zzz 라는 변수명)에 대입해 주면
결과값이, 화면이 아닌 변수 속으로 들어가 저장됩니다.
다음과 같습니다.
zzz=`grep -c 'foo' *.txt`
이제
echo $zzz
이런 명령을 실행하시면
0.txt:1 test.txt:3
이렇게 "셀 변수"의 내용이 화면에 출력됩니다.
백틱(backtick) 문자는 키보드 맨 좌측 상단의
물결무늬 밑에 있는 문자인데
홑따옴표와 아주 비슷하게 보이지만 전혀 다른 문자입니다.
만약 "셀 변수"의 내용을 "시스템 환경변수"에 복사하여 저장하시려면
export zzz
라고 하시면 됩니다.
그런 후
env
라는 명령을 실행하면 모든 환경변수가 출력되는데
그곳에 zzz도 있습니다.
<< Home