2017-02-16 3 views
1

저는 홈 디렉토리에 있으며, 내가 꼬리를 바꿔야 할 두 개의 다른 파일에 대한 경로를 제공하고 있습니다. 각 파일은 2 개의 변수에 대해 그립니다. 내 문제는이 스크립트가 어떤 이유로 saveFile.txt에 쓰지 않는다는 것입니다. saveFile.txt는 내가 실행하고있는 스크립트와 같은 디렉토리에 있습니다.grep이 파일에 쓰지 않습니다.

#!/bin/sh 
tail -f <path1> -f <path2> | egrep -i --line-buffered '<variable1>|<variable2>' > saveFile.txt 

추가 보너스로 동일한 스크립트를 통해 파일에 던져지는 출력에 간격을 추가 할 수 있습니까? 루비 또는 파이썬 하하에서 이것을 작성하는 것이 더 쉽다는 말을 들었습니다.

감사합니다.

+1

'egrep'이'stdout'에 출력을 내고 있습니까? 결과가 있는지 확인하기 위해 파일에 쓰지 않고 시도 할 수 있습니까? – Inian

+1

여기에 표시된대로 한 줄에 모든 항목이 있습니까? – choroba

+0

나는 한 꼬리와 단일 egrep w/o 파일에 쓰기를하고 나에게 출력을주는 것을 시도했다. –

답변

0

여기에 동작하는 예제입니다 :

tail -f ./listener/alert/log.xml ./listener/trace/listener.log | grep -P --line-buffered '[A-z]+' | tee ~/foo.txt 

참고 : 꼬리가 여러 -f 인수를 필요로하지 않습니다. grep에서 펄 정규 표현식을 -P 플래그와 함께 사용하고 있습니다. 그리고 마지막으로 콘솔에서 출력을보고 파일로 보내고 싶습니다. tee을 사용합니다.

+0

Te의 사용법에 대한 맨 페이지를 이해하고 있는지 확인하기 위해 '> saveFile.txt'를 사용하는 것과 같습니다. 단, 출력도 나와 있습니다. 그리고 죄송합니다. 어리석은 질문이지만 왜 텍스트 파일 앞에 './'를 사용합니까? 감사! –

+0

(1) 예, 출력을 콘솔로 보내고 파일로 전송합니다. 능숙한. >>와 동일하며 파일에 계속 추가됩니다. (2) 필자는 예제에서 상대 경로를 사용하고 있으므로 점 슬래시는 단순히 tail 명령이 실행되는 현재 디렉토리에서 경로를 시작한다는 의미입니다. 당신은 절대 경로를 쉽게 사용할 수 있습니다./var/log. – gregory

관련 문제