
애플리케이션을 실행하고 출력을 grep
. 이것은 작동합니다. 그러나 화면에 출력을 표시하고 파일에 쓰고 싶습니다.
grep
그래서 결과를 다음과 같이 전송하고 있습니다 tee
.
./app | grep something | tee file.txt
하지만 이는 100% 결과가 나와도 결과가 표시(또는 작성)되지 않습니다(2개의 인스턴스를 실행하여 확인했습니다).
앱의 출력을 파악하고, 파일에 쓰고, 화면에 표시하려면 어떻게 해야 하나요?
답변1
작성한 명령이 작동해야 합니다. 명령이 올바르지 않게 작동하는 데에는 여러 가지 이유가 있을 수 있습니다.
- 앱은 출력 텍스트를 표준이 아닌 다른 출력으로 보냅니다.
- grep 명령을 사용한 검색에 대한 문자 체인이 잘못 입력되었습니다.
사례#1의 해결 방법
- 앱이 검색할 출력에 원하는 텍스트를 보내는지 수동으로 확인하세요.
./app
- 출력 텍스트를 파일로 리디렉션
./app > file.txt
하고 파일 내용을 확인합니다.cat file.txt
- 파일에 원하는 텍스트가 포함되어 있지 않으면 애플리케이션이 표준 출력이 아닌 오류 출력으로 출력을 보낼 가능성이 높습니다. 따라서 다른 방식으로 파일로 리디렉션
./app 2 > file.txt
하고 파일 내용을 다시 확인해보세요.cat file.txt
- 이번에는 파일 내용이 맞다면 해결은 쉽습니다. 오류 출력을 표준 출력으로 리디렉션하기만 하면 됩니다.
./app 2>&1 | grep "something" | tee file.txt
사례 #2의 해결 방법
- 검색 패턴으로 사용하는 문자열을 주의 깊게 확인하세요. 와일드카드 문자, $variablename 변수, 정규 표현식 등이 무작위로 잘못 해석되는 것을 제외하려면 따옴표나 아포스트로피로 묶습니다.
- 잘못 해석될 수 없는 문자나 숫자로만 구성된 매우 간단한 문자열에 대해 grep을 사용하여 검색을 테스트하는 것부터 시작하십시오.