1

xmllint を使用して一連の XML を検証しようとしています。

コマンドを使用します: xmllint --noout --schema MySchema.xsd dir/*.xml

これにより、各ファイルのリストと、それが検証されたか失敗したかが stdout に出力されます。このリストを削除して、検証に失敗したファイルのみを表示したいと考えています。

結果をフィルタリングするために stdout でパイプ grep を実行できることに慣れています。たとえば、ls | を実行すると、grep "config" は、名前に config が含まれるファイルのみを一覧表示します。

しかし、何らかの理由で、上記のコマンドの後に | を実行します。grep "失敗" または | grep -v "validates" は、コンソールの stdout にスローされる (大量の) テキスト行数の削減にはまったく効果がありません。完全なリストは関係なく表示されます

xmllint からの出力がパイプの有効な入力ではないかのようです。

4

1 に答える 1

3

xmllint はおそらく stdout ではなく stderr に出力しています。grep の前に stderr を stdout にリダイレクトします。

xmllint --noout --schema MySchema.xsd dir/*.xml 2>&1 | grep -v "validates
于 2014-06-17T17:05:49.713 に答える