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 --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 | 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 ABC | tee out
これを試して
./adb logcat -s "ABC" > std.txt
そのようなものは、単語時間、testapk1、testapk2のすべてのエントリを探している可能性があります
adb logcat -v time testapk1 testapk2 *:S -d > adblogfilter.log
「LogCatをテキストファイルに保存するには、ターミナルウィンドウを開き、次のように入力します:adb logcat-d>logcat.txt」
これを試して
adb logcat -d -e "ABC" > std.txt