2014-06-17 3 views
1

xmllint를 사용하여 XML 묶음의 유효성을 검사하는 중입니다. 각 파일의하고 검증 또는 실패 여부 목록을 stdout에어떻게 grep xmllint 결과를 파이프합니까?

이 인쇄 xmllint가 --noout --schema MySchema.xsd 디렉토리/* XML :.

나는 명령을 사용합니다. 이 목록을 삭제하고 유효성을 검사하지 못한 파일 만 표시하고 싶습니다.

결과를 필터링하기 위해 stdout에서 파이프 grep을 수행하는 데 익숙합니다. 예를 들어, ls | grep "config"는 이름에 config가있는 파일 만 나열합니다.

그러나 위의 명령을 수행하는 몇 가지 이유로 | grep "failed"또는 | grep -v "validates"는 콘솔 stdout에 던져지는 텍스트 줄 수를 줄이는데 아무런 효과가 없습니다. 모든 목록이 관계없이 표시됩니다.

xmllint의 출력이 파이프에 유효한 입력이 아닌 것 같습니다.

답변

3

xmllint는 아마도 stdout 대신 stderr에 인쇄하고있을 것입니다. grep 앞에 stderr를 표준 출력으로 리디렉션하십시오.

xmllint --noout --schema MySchema.xsd dir/*.xml 2>&1 | grep -v "validates 
+0

감사합니다. 완벽하게 작동했습니다. 어떤 이유인지 나는 xmllint가 기본적으로 stdout으로 출력하는 것을 이해했습니다. – user2197116