grep을 사용하여 문자열이 포함된 모든 키 입력 수를 찾습니다.

grep을 사용하여 문자열이 포함된 모든 키 입력 수를 찾습니다.

string 을 포함하는 모든 입력된(시작) 명령에 대해 bash 기록 로그를 검색하고 있습니다 x. 무슨 이유에서인지 숙제검사관은 내가 낸 숫자가 실제보다 높다고 계속 말한다.

제가 입력한 내용은 다음과 같습니다.

grep -o 'x' "/home/user/.bash_history" | wc -l >> FILE

답변1

어떤 작업 검사기를 말씀하시는지 모르겠지만 여기서 문제는 행 수가 아닌 x발생 횟수를 계산한다는 점일 수 있습니다 x. 이 플래그는 줄에서 일치하는 부분만 인쇄하도록 -o하며 , 같은 줄에 s가 많으면 각각을 별도로 인쇄합니다.grepx

$ echo "xxx" | grep -o x
x
x
x

그래서, 당신은 거기에서 그것을 원하지 않습니다 -o. 둘 중 하나도 필요하지 않습니다 wc. 이것이 바로 grep -c옵션의 용도입니다.

$ history | grep -c x
1001

앞으로는 해당 옵션을 사용하기 전에 명령의 매뉴얼 페이지를 읽어 보십시오. 이렇게 하면 많은 문제가 해결될 것입니다.

답변2

더 나은 검색이 필요합니다.grep정규식을 사용하여 명령을 검색할 수 있습니다.

남자 grep에서:

DESCRIPTION
grep  searches  the  named  input  FILEs for lines containing a 
match to the given PATTERN.

"Ulrich Schwarz"가 말했듯이 -c 매개변수를 사용하여 계산할 수 있습니다.

남자 grep에서:

-c, --count
Suppress normal output; instead print a count of matching lines for
each input file.

따라서 정규식을 사용하여 bash_history에서 명령 실행을 검색한 다음 개수를 계산합니다.

grep -E "EXP" .bash_history

그렇지 않으면

grep "EXP" .bash_history

: 'rm' 명령의 수를 계산하려면 다음을 수행하십시오.

grep -E ^rm* /home/<user>/.bash_history -c

그렇지 않으면

grep ^rm* /home/<user>/.bash_history -c

실시예 2: 이 문자열이 포함된 명령어의 개수를 세고 싶은 경우엑스:

grep -E X /home/<user>/.bash_history -c

그렇지 않으면

grep X /home/<user>/.bash_history -c

정규식에 대한 추가 정보:GNU - grep 정규식 구문

관련 정보