Вы можете использовать agrep
для применения операции AND. К сожалению, он не может применить AND к списку деталей в файле, поэтому вам придется сначала расширить его до аргумента команды.
patterns=$(sed 's/;/\\;/' <args | tr '\n' ';' | sed 's/;$//')
agrep "$patterns" text
Муллинг для создания списка деталей соединяет их точкой с запятой. Однако в конце списка не должно быть точки с запятой, поэтому она удаляется, а также все детали, уже содержащие точку с запятой, должны быть экранированы, чтобы они не рассматривались как оператор AND. Используйте echo "$patterns"
, чтобы увидеть, как преобразуется файл args
.
Это совершенно разные вещи.
В большинстве известных мне систем с dmesg
это иногда команда, а иногда файл журнала в /var/log
, а может быть и то, и другое. Журнал содержит сообщения, созданные ядром. Обычно это включает в себя различные сообщения зонда устройства во время последовательности загрузки, а также любые другие сообщения, выводимые ядром во время работы системы.
В зависимости от того, что означает «журнал», я полагаю, это могут быть разные вещи.Журнал, который первым приходит мне на ум, — это журнал журналируемой файловой системы. Этот журнал содержит различные транзакции, выполненные с определенным разделом (частью диска), и позволяет системе последовательно воспроизводить дисковые операции в случае сбоя системы. Этот журнал обычно недоступен для пользователей.
Если "journal" относится к journalctl
, то они похожи, но не одинаковы. journalctl
имеет параметр --dmesg
, который имитирует dmesg
.
Сравните руководства для journalctl
и dmesg
для вашей системы.