Milisaniye cinsinden (bu soruyla gerçekten alakalı olmayan) bir Android uygulaması için UI çizim zamanını alabilmek için bir kabuk komutum var. Her halükarda, çıktı benziyor
I/ActivityManager( 1843): Fully drawn com.amazon.android.calypso/com.amazon.android.tv.tenfoot.ui.activities.ContentBrowseActivity: [time]
Nerede [süre] biçimi olan +###ms
veya +#s###ms
(burada yine ilgili değildir).
Komut aşağıdaki gibidir:
adb logcat -d | grep 'Fully drawn' | sed -e 's/^.*: +\(.*\)ms$/\1/' -e 's/s//'
echo
Çıktıyı doğrudan görüntülemek için kullandığımda beklendiği gibi çalışıyor :
$ echo 'I/ActivityManager( 1843): Fully drawn com.amazon.android.calypso/com.amazon.android.tv.tenfoot.ui.activities.ContentBrowseActivity: +233ms' | sed -e 's/^.*: +\(.*\)ms$/\1/' -e 's/s//'
> 233
$ echo 'I/ActivityManager( 1843): Fully drawn com.amazon.android.calypso/com.amazon.android.tv.tenfoot.ui.activities.ContentBrowseActivity: +1s233ms' | sed -e 's/^.*: +\(.*\)ms$/\1/' -e 's/s//'
> 1233
Ancak, aynı formatta bir çıktı göstermesi gereken diğer komutlarda kullandığımda, sed
sadece oluşturma süresinden ziyade tüm satırla eşleşiyor:
$ adb logcat -d | grep 'Fully drawn' | sed -e 's/^.*: +\(.*\)ms$/\1/' -e 's/s//'
> I/ActivityManager( 1843): Fully drawn com.amazon.android.calypo/com.amazon.android.tv.tenfoot.ui.activities.ContentBrowseActivity: +233ms
Çıktıyı ilk önce bir değişkene koyduğumda da aynı şey olur.
$ out="$(adb logcat -d | grep 'Fully drawn')"
$ echo $out | sed -e 's/^.*: +\(.*\)ms$/\1/' -e 's/s//'
> I/ActivityManager( 1843): Fully drawn com.amazon.android.calypo/com.amazon.android.tv.tenfoot.ui.activities.ContentBrowseActivity: +233ms
Çıktıyı bir metin dosyasına atmaya çalıştım, zar yok:
adb logcat -d | grep 'Fully drawn' > temp.txt
cat temp.txt | sed -e 's/^.*: +\(.*\)ms$/\1/' -e 's/s//'
> I/ActivityManager( 1843): Fully drawn com.amazon.android.calypo/com.amazon.android.tv.tenfoot.ui.activities.ContentBrowseActivity: +233ms
Neden böyle olduğunu bilen var mı?
Evet, nedeni bu. Değiştim
—
Danny Chia,
ms$
için ms.*$
ve bu sorun çözüldü. Teşekkürler!
@IporSircer Belki de OP'nin konuyu kapatması için cevap olarak yazabilirsin?
—
ejbytes
$
Sed komutunda izini atlamayı dene .