grep에 처리되는 줄 수에 대한 내부 제한이 있음을 발견했습니다.
이 제한을 제거하는 방법이 있습니까?
$ cat debug-2020-09-14.log | wc -l
5255625
$ cat debug-2020-09-14.log | grep -v "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" | wc -l
3239948
$ cat debug-2020-09-14.log | grep "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" | wc -l
0
로그 파일에 바이너리 데이터가 있다고 생각합니다. 일단 grep
거기에 바이너리 데이터를 가진 라인과 일치 grep
인쇄 Binary file (standard input) matches
(안 열려진!, 표준 출력)을 종료합니다. 이진 부분 이후의 모든 일치는 무시됩니다.
이 이론을 확인하려면
grep . debug-2020-09-14.log | grep -x 'Binary file .* matches'
이것이 실제로 문제인 경우 grep
의 -a
옵션을 사용하여 수정할 수 있습니다. 여기에서 우리는 또한 대체 cat
와 wc -l
로 grep
의 기능을 제공합니다.
grep -ac aaaa debug-2020-09-14.log
에서 man grep
:
-a
,--text
바이너리 파일을 마치 텍스트처럼 처리합니다. 이것은--binary-files=text
옵션 과 동일합니다 .
--binary-files=TYPE
파일의 데이터 또는 메타 데이터가 파일에 이진 데이터가 포함되어 있음을 나타내는 경우 파일 유형이TYPE
. [...] grep은 널 입력 이진 데이터가 발견 된 후 출력을 억제합니다 [...]. 일부 출력이 억제되면 grep은 이진 파일이 일치한다는 한 줄 메시지와 함께 출력을 따릅니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다