Строки количества, соответствующие шаблону и соответствующие предыдущей строке

Byobu на самом деле устанавливает настольное приложение, также. В классическом Gnome (Монетный двор?), это должно находиться под Приложениями-> Аксессуары.

Когда Вы работаете, byobu-включают, это помещает строку в конце Вашего ~/.profile. Если Вы хотите, чтобы byobu запустился каждый раз, когда Вы выполняете xterm, то необходимо добавить ту строку к ~/.bashrc вместо этого. Обратите внимание, что при использовании tmux (а не экран) как byobu бэкенд необходимо будет сбросить $TMUX переменная также. Попробуйте это:

echo "_byobu_sourced=1 TMUX= . /usr/bin/byobu-launch" >> ~/.bashrc

Полное раскрытие: Я - исходный автор и текущий специалист по обслуживанию Byobu.

5
09.03.2013, 00:27
4 ответа

Если Ваш grep GNU grep, вот быстрое и грязное решение:

grep -A1 "Prepare to remove role" | grep "Delete Successful" | wc -l

grep опция -A1 говорит grep печатать согласующий отрезок длинной линии И одну строку после согласующего отрезка длинной линии. Второй grep затем только печатает строки, где удаление успешно.

Обратите внимание, что это будет только работать надежно, когда "Подготовятся удалять роль, X" строк всегда сразу сопровождаются, "Удаляют Успешную" строку.

Также примечание: Вам не нужно wc -l потому что grep встроили ту функциональность:

grep -A1 "Prepare to remove role" | grep -c "Delete Successful"
6
27.01.2020, 20:35
  • 1
    , как Вы говорите если Ваш grep GNU? –  amphibient 08.03.2013, 23:06
  • 2
    @amphibient Главным образом, у Вас есть GNU grep, если Вы находитесь на невстроенном Linux или Cygwin. grep --version скажет Вам наверняка (GNU grep скажет, что это - GNU grep). Существуют другие grep реализации та поддержка -A, такой как FreeBSD и BusyBox (если включено во время компиляции). –  Gilles 'SO- stop being evil' 09.03.2013, 00:29
  • 3
    @amphibient, Если это - GNU, это будет также поддерживать a --version опция, которая скажет Вам, если это будет GNU grep. GNU grep является значением по умолчанию grep большинства дистрибутивов Linux и большей части BSDs и производных включая MacOS/X, но обычно не находится на других коммерческих Нельдах как Солярис, HP/UX или AIX или под другим именем как ggrep или другое местоположение как /opt/gnu/bin/grep. –  Stéphane Chazelas 09.03.2013, 00:30
  • 4
    @Gilles, grep FreeBSD является GNU grep AFAIK. –  Stéphane Chazelas 09.03.2013, 00:32
  • 5
    @StephaneChazelas, О, право, они повторно реализовали tar, но захватили grep. s/Free/Open/затем, OpenBSD действительно сохраняют свою собственную реализацию grep и поддержки -A. –  Gilles 'SO- stop being evil' 09.03.2013, 00:36

С awk:

awk '/Delete Successful/ && last_line ~ /Prepare to remove role/ {n++}
     {last_line=$0}
     END {print n+0}'
3
27.01.2020, 20:35

Принятие их является этими только двумя путями, "Удаляют Успешный", может войти в журнал, почему не только используют определенную математику?

SUCCESS=$(grep 'Delete Successful' | wc -l)
POLICY_COUNT=$(grep 'Prepare to delete policy X' | wc -l)
POLICY_FAIL=$(grep 'Failed to delete policy X' | wc -l)
POLICY_SUCCESS=$(( $POLICY_COUNT - $POLICY_FAIL ))
ROLE_SUCCESS=$(( $SUCCESS - $POLICY_SUCCESS ))
1
27.01.2020, 20:35

(Так как алгоритмы только для оболочки оказались значительно медленнее, чем внешние инструменты, я просто удалил любые ссылки на них. Исходные данные могли бы быть интересными все же.)

Данные тестирования:

Prepare to remove role foo
Delete Successful
Prepare to remove role bar
Failed to delete role bar: 1
Prepare to remove policy baz
Delete Successful
Prepare to remove role ban
Delete Successful
something
else
Prepare to remove role bay
Failed to delete role bar: 2
Prepare to remove role bat
Failed to delete role bar: 1

Сравнительный тест с данными тестирования выше повторил миллион раз (это составляет 306 МБ), лучше всего из трех чередованных выполнений, отсортированных путем увеличения real время:

Тестовый код:

for index in {1..3}
do
    for path in grep.sh awk.sh
    do
        echo "$path:"
        time bash "$path"
        echo
    done
done

Система тестирования: Intel Core i7 3,07 ГГц с 6 ГБ RAM.

0
27.01.2020, 20:35
  • 1
    : нет доступный second_line-> устаревший процесс Стамбул –  H.-Dirk Schmitt 08.03.2013, 21:19
  • 2
  • 3
    Несколько вещей будут влиять на производительность. Реализация утилит: mawk значительно быстрее, чем простофиля. Количество центральных процессоров в grep решении будет иметь значение. Локаль будет иметь значение (более старые версии простофили, как было известно, были мертвы медленный в многобайтовых локалях). Можно хотеть полагать, что процессорное время по сравнению со стеной показывает время. Частота возникновения во входе шаблонов для соответствия может также иметь значение. –  Stéphane Chazelas 09.03.2013, 15:32

Теги

Похожие вопросы