adb produz CR / LF similar ao final das linhas. Tente pular o comando $
in sed no final.
Eu tenho um comando shell para obter o tempo de desenho da interface do usuário para um aplicativo Android (que não é realmente relevante para essa pergunta) em milissegundos. De qualquer forma, a saída se parece com
I/ActivityManager( 1843): Fully drawn com.amazon.android.calypso/com.amazon.android.tv.tenfoot.ui.activities.ContentBrowseActivity: [time]
Onde [tempo] tem o formato +###ms
ou +#s###ms
(novamente, não relevante aqui).
O comando é o seguinte:
adb logcat -d | grep 'Fully drawn' | sed -e 's/^.*: +\(.*\)ms$//' -e 's/s//'
Funciona como esperado quando uso echo
para exibir diretamente a saída:
$ echo 'I/ActivityManager( 1843): Fully drawn com.amazon.android.calypso/com.amazon.android.tv.tenfoot.ui.activities.ContentBrowseActivity: +233ms' | sed -e 's/^.*: +\(.*\)ms$//' -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$//' -e 's/s//'
> 1233
No entanto, quando eu usá-lo em outros comandos que devem exibir uma saída do mesmo formato, sed
corresponde à linha inteira e não apenas ao tempo de renderização:
$ adb logcat -d | grep 'Fully drawn' | sed -e 's/^.*: +\(.*\)ms$//' -e 's/s//'
> I/ActivityManager( 1843): Fully drawn com.amazon.android.calypo/com.amazon.android.tv.tenfoot.ui.activities.ContentBrowseActivity: +233ms
O mesmo acontece quando eu coloco a saída em uma variável primeiro.
$ out="$(adb logcat -d | grep 'Fully drawn')"
$ echo $out | sed -e 's/^.*: +\(.*\)ms$//' -e 's/s//'
> I/ActivityManager( 1843): Fully drawn com.amazon.android.calypo/com.amazon.android.tv.tenfoot.ui.activities.ContentBrowseActivity: +233ms
Tentei despejar a saída em um arquivo de texto, sem dados:
adb logcat -d | grep 'Fully drawn' > temp.txt
cat temp.txt | sed -e 's/^.*: +\(.*\)ms$//' -e 's/s//'
> I/ActivityManager( 1843): Fully drawn com.amazon.android.calypo/com.amazon.android.tv.tenfoot.ui.activities.ContentBrowseActivity: +233ms
Alguém sabe por que esse é o caso?