0

人々

次のような出力ファイルがあります。

Title: [name of component]
**garbage output**
**garbage output**
Test run: succuess 17 failure 2
**garbage output**
**garbage output**

このようなコンポーネントはたくさんあります。出力方法を変更できません。だから私はタイトルとテスト結果の行をつかみたいと思います。

私の質問は、これを達成するために正規表現をどのように書くかです。

私は試した:

cat output | sed -e 'm/Tests run(.*)/g'

しかし、それは常に不平を言います:未知のコマンド `m '

正規表現以外の他の方法もいただければ幸いです!!!

どうもありがとう

4

1 に答える 1

3

あなたは猫を必要としない、試してみてください

  grep -E '^Title:|^Test run' fileName

古いシステムでは、を使用する必要がある場合がありますegrep '^Title...'

のために編集

「Title:fooXXX」や「TitlebarXXX」など、特定のプレフィックスが付いたタイトルを結果から除外したい。

これを処理するgrep-Eの正規表現は確かにありますが、cmd-line作業の最初の数年間は、これを使用してtest.log出力をクリーンアップしているように見えるので、unixツールボックスを使用することをお勧めします。アプローチ、この場合、「何かを機能させて、それにもう少し追加する」、すなわち

  grep -E '^Title:|^Test run' fileName | egrep -v '^Title: foo XXX|^Title:bar XXX'

これはunixパイプラインの力であり、出力が多すぎますか?それから、さらにgrep -vsを追加してクリーンアップします。

*grep -vこれは、次のパターンに一致する行を除外することを意味することに注意してください。

これがお役に立てば幸いです

于 2012-04-20T18:51:24.050 に答える