Gnused может выполнить функцию bash, увеличивающую значение

Проблема решена, но не связана с ней. Я напишу, как я отладил эту проблему.

Мне нужно было проверить /var/log/Xorg.0.log, но файл был как-то обрезан, так что я пропустил ошибку.

  • войти в другой терминал с помощью Ctrl + Alt + F1 .
  • сохранять все новые данные в файле журнала в отдельный файл:tail -f /var/log/Xorg.0.log >> ~/tmp/Xorg.log
  • вернитесь к диспетчеру входа с помощью Ctrl + Alt + F7 .
  • попытка входа в систему, в моем случае произошел сбой и возврат к диспетчеру входа.
  • вернитесь к другому терминалу с помощью Ctrl + Alt + F1 , посмотрите, что произошло в ~/tmp/Xorg.log.

В моем случае, если хотите знать, xkbcompвылетел из-за ошибки сегментации из-за ошибки в файле конфигурации моей клавиатуры, унеся с собой все это. Я предполагаю, что xkbcompявляется более новой версией, чем та, что у меня была ранее (, потому что я обновил Debian ), и она менее устойчива к ошибкам конфигурации, чем старая версия.

0
16.10.2021, 00:28
1 ответ

Поскольку вы используете GNU sed, вы можете получить желаемые результаты, не прибегая к определяемая пользователем функция. Здесь мы используем пространство хранения для хранения увеличивающегося счетчика.

echo -e 'oAo\nooAoAoA\no' | 
sed -En "/A/!d
  p;:a
  H;g
  s/^(\n*).*/expr '\1' : '.*'/ep
  g;s//\1/;x;s/^\n*//;s/A//;//ba
"

Выход:

oAo
1
ooAoAoA
2
3
4
0
16.10.2021, 15:52

Теги

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