web-dev-qa-db-ja.com

adb logcatをgrepし、出力をテキストファイルに書き込みます

Adb logcatをgrepし、出力をテキストファイルに書き込みたいです。私がやれば

./adb logcat > std.txt

ログ全体をテキストファイルに書き込みます。

./adb logcat | grep ABC

aBCを含むすべての行を端末に出力します。しかし、ABCを検索し、これらの行のみをテキストファイルに書き込みたいと思います。

./adb logcat | grep ABC > std.txt

動作しません。 Plzヘルプ。

31
AndroidGuy

Grepのバッファリングに問題があると思います。次のようなものを試すことができます:

./adb logcat | grep --line-buffered ABC > std.txt

連鎖grepでも同じ問題になるはずです。

編集:同様の質問をここで見つけることができます: grepを2回使用すると出力が表示されないのはなぜですか?

51
Brtle

これは私のために働いています:

./adb logcat | grep ABC | dd of=/home/levex/dump.txt

説明:./adb logcatはlogcatを開き、パイプを経由してgrep ABCは、行をABCを含む行にフィルターし、再びパイプを介してdd of=/home/levex/dump.txt最終的にファイルに出力します。 of=xxxパラメータは出力ファイルを設定します。

4
Levente Kurusa

編集:これは動作するようです

 ./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
3
Vishnuprasad R

これを試して

./adb logcat -s "ABC" > std.txt
1
UdayaLakmal

Word time、testapk1、testapk2のすべてのエントリを探しているようなもの

adb logcat -v time testapk1 testapk2 *:S -d > adblogfilter.log 
1
Thomas J Younsi

adb logcat | grep ABC | tee out

1
pierrotlefou

LogCatをテキストファイルに保存

「LogCatをテキストファイルに保存するには、ターミナルウィンドウを開いて次のように入力します。adblogcat -d> logcat.txt」

1
Adnama