공백이 있는 Grep이 갑자기 작동하지 않습니다.

공백이 있는 Grep이 갑자기 작동하지 않습니다.

다음과 같이 실행할 때 grep:

$ tail -f apilog_2014.07.09.log | grep "HELLO" | grep "99999"

원하는 출력을 얻습니다.

12:22:35 server apache2:  HELLO FRIEND 99999
12:22:35 server apache2:  HELLO FRIEND 99999
12:22:35 server apache2:  HELLO FRIEND 99999

하지만 이렇게 하면:

$ tail -f apilog_2014.07.09.log | grep "HELLO FRIEND" | grep "99999"

나는 아무것도 얻지 못했습니다.

내 로케일은 모두 로 설정 되어 en_US.utf8있으며 . 결과가 없다. 파일 자체는 ( 로 확인 )입니다.[[:space:]]\stext/plain; charset=us-asciifile -bi apilog_2014.07.09.log

rsyslog힌트가 있는 경우 파일 자체는 에 기록됩니다 . 사용 Ubuntu 12.04.4 LTS.

내가 놓친 것이 있나요?

요청대로:

$ grep "HELLO" apilog_2014.07.09.log | od -c
0000000   1   4   :   2   7   :   0   0       s   o   f   i   a       c
0000020   a   r   l   o   s   :           A   P   I   L   O   G       H
0000040   E   L   L   O       F   R   I   E   N   D       t   e   s   t
0000060   i   n   g  \n   1   4   :   3   1   :   4   5       s   o   f
0000100   i   a       c   a   r   l   o   s   :           A   P   I   L
0000120   O   G       H   E   L   L   O       F   R   I   E   N   D
0000140   t   e   s   t   i   n   g       6   3   9   0   3  \n
0000156

2014년 7월 14일 업데이트됨

여기에 답하세요:공백이 있는 Grep이 갑자기 작동하지 않습니다.

관련 질문(동일한 솔루션):grep에서 awk로의 파이프가 작동하지 않습니다.

답변1

문제가 발견되었습니다. 질문 시작 부분부터 기억하시면 제가 주로 이렇게 하고 있었는데, tail -f출력이 없다고 말한 것은 틀렸고, 콘솔을 계속 실행시켰더니 결국 (10분 후에) 출력이 나왔습니다. 자세한 설명은 여기서

http://www.ateamsystems.com/tech-blog/grep-output-is-delayed-or-no-output-when-piping-or-using-multiple-grep-calls-with-pipes/

공백 문자가 출력 사이의 시간에 영향을 미치는 이유는 여전히 미스터리이지만 해당 링크의 질문에 따라 해결되었습니다.

기본적으로 나는 내 것을 편집했다..bashrc

alias grep="grep --color=auto --line-buffered"

이제 원하는 결과를 얻었습니다.

관련 정보