2015-10-13 1 views
1

Имея некоторые проблемы с использованием adb, grep и cut. У меня есть команда нижеadb | grep | сокращение не показывает результат ... но кошка | grep | cut is ok

adb logcat | grep MYTEXT 

это результат нескольких текстов, которые имеют «:» их разделение.

Если я использую ниже, чтобы удалить текст перед «:», это не сработает.

adb logcat | grep MYTEXT | cut -d':' -f 2- 

Однако, если я сначала сбрасываю файл и затем делаю то же самое. Оно работает.

adb logcat > mylog.out 
cat mylog.out | grep MYTEST | cut -d':' -f 2- 

я могу использовать этот подход, как решить эту проблему, но я предпочел бы не нужно сбрасывать в mylog.out первый как временный шаг в моем сценарии.

Любой, кто просветит? Благодаря!

+2

'adb logcat' может отправлять свой вывод на стандартную ошибку вместо стандартного вывода. «Adb logcat>/dev/null» все еще показывает результат? Не отображается ли 'adb logcat 2>/dev/null'? Если это так, вам нужно «adb logcat 2> & 1 | .... '. –

+0

'adb logcat> dev/null' ничего не показывает. 'adb ​​logcat 2>/dev/null' показывает результат. – Elye

+0

Затем он отправляет на стандартный вывод и ваш 'adb | grep | cut' должен работать одинаково с файлом. Является ли 'MYTEXT' /' MYTEST' опечаткой в ​​этом вопросе или проблема? И что же означает «не работает»? Отсутствует ли какой-то результат? Все ли выходные данные отсутствуют? «Вырезать» не разрезать? –

ответ

2

Предполагая, что здесь нет опечаток (MYTEXT/MYTEST) или других подобных вопросов, это, вероятно, связано с буферизацией данных и объема данных.

Сообщать grep, чтобы буферный выход его по линиям с опцией --line-buffered, вероятно, поможет здесь.

adb logcat | grep --line-buffered MYTEXT | cut -d':' -f 2- 

Как могущество, используя unbuffer или stdbuf утилиты.

Смежные вопросы