나는 sed
최근에 그것을 사용하기 시작했습니다. 내가 사용하는 편리한 방법은 로그 파일에서 중요하지 않은 줄을 무시하는 것입니다.
tail -f example.com-access.log | sed '/127.0.0.1/d;/ELB-/d;/408 0 "-" "-"/d;'
하지만 유사하게 사용하려고 하면 find
결과가 예상과 다릅니다. 다음과 같이 "Permission Denied"가 포함된 줄을 무시하려고 합니다.
find . -name "openssl" | sed '/Permission denied/d;'
그러나 여전히 "권한 거부" 메시지가 많이 표시됩니다 stdout
.
편집하다
아래 정답에서 언급했듯이 "Permission Denied" 메시지가 stderr
및 NOT 에 나타납니다 stdout
.
답변1
문제는 오류 출력이 다음으로 인쇄된다는 것입니다.표준 에러이므로 sed
명령이 입력을 캡처할 수 없습니다. 간단한 해결책은 stderr를 stdout으로 리디렉션하는 것입니다.
find . -name "openssl" 2>&1 | sed '/Permission denied/d;'
답변2
sed
왜 삭제 하려고 하는지 모르겠네요허가가 거부되었습니다find
- 사용 방법을 배우고 싶지 않은 경우 출력의 메시지입니다 sed
.
나는 간단히 이것을 실행합니다 :
찾다. -이름 "openssl" 2>/dev/null
여기로 리디렉션 중입니다.표준 에러(파일 설명자2)로 이동합니다 /dev/null
( 참조 man null
). 즉, 2>/dev/null
단순히 작성된 모든 내용을 폐기합니다.표준 에러.