다음과 같이 실행할 때 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:]]
\s
text/plain; charset=us-ascii
file -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분 후에) 출력이 나왔습니다. 자세한 설명은 여기서
공백 문자가 출력 사이의 시간에 영향을 미치는 이유는 여전히 미스터리이지만 해당 링크의 질문에 따라 해결되었습니다.
기본적으로 나는 내 것을 편집했다..bashrc
alias grep="grep --color=auto --line-buffered"
이제 원하는 결과를 얻었습니다.