Adb logcatをgrepし、出力をテキストファイルに書き込みたいです。私がやれば
./adb logcat > std.txt
ログ全体をテキストファイルに書き込みます。
./adb logcat | grep ABC
aBCを含むすべての行を端末に出力します。しかし、ABCを検索し、これらの行のみをテキストファイルに書き込みたいと思います。
./adb logcat | grep ABC > std.txt
動作しません。 Plzヘルプ。
Grepのバッファリングに問題があると思います。次のようなものを試すことができます:
./adb logcat | grep --line-buffered ABC > std.txt
連鎖grepでも同じ問題になるはずです。
編集:同様の質問をここで見つけることができます: grepを2回使用すると出力が表示されないのはなぜですか? 。
これは私のために働いています:
./adb logcat | grep ABC | dd of=/home/levex/dump.txt
説明:./adb logcat
はlogcatを開き、パイプを経由してgrep ABC
は、行をABC
を含む行にフィルターし、再びパイプを介してdd of=/home/levex/dump.txt
最終的にファイルに出力します。 of=xxx
パラメータは出力ファイルを設定します。
編集:これは動作するようです
./adb logcat |grep --line-buffered ABC >a.txt
ここで何が起こっているのか説明できます。誰かがそれから解決策を導き出すことができることを願っています。ターミナルで次のコマンドを実行する場合
cat |grep "ABC"
テキスト行の入力を開始すると、grepに含まれている行がすぐに出力されることがわかります。
cat somefile.txt | grep "ABC"
期待どおり、「ABC」を含むすべての行を端末に出力します。
しかし、あなたが実行した場合
cat |grep ABC >a.txt
端末でテキストの入力を開始すると、EOF文字(Ctrl + D)を入力してcatを終了させるまで、ファイルが書き込まれないことがわかります。
ただし、--line-bufferedを使用すると、期待どおりの出力が得られます
cat |grep --line-buffered ABC >a.txt
これを試して
./adb logcat -s "ABC" > std.txt
Word time、testapk1、testapk2のすべてのエントリを探しているようなもの
adb logcat -v time testapk1 testapk2 *:S -d > adblogfilter.log
adb logcat | grep ABC | tee out
「LogCatをテキストファイルに保存するには、ターミナルウィンドウを開いて次のように入力します。adblogcat -d> logcat.txt」