Некропостинг, но сегодня я столкнулся с той же проблемой и решил ее. Скорее всего journalctl --user-unit chatty
у вас не сработало, потому что вы запускаете его от root. Однако по man journalctl
, --user-unit
фильтрует записи журнала не только по _SYSTEMD_USER_UNIT=
, но и по _UID=
, а службы chatty
с uid root нет, поэтому записи не найдены.
Вероятно, вы также пытались запустить journalctl --user-unit chatty
от своего обычного пользователя, но получили No journal files were found
. Это происходит из-за того, что (и Всем пользователям предоставляется доступ к своим приватным за -журналам пользователей из man journalctl
здесь может быть запутанным )в 2018 году на моем Debian 9 journalctl все еще не сохраняется по умолчанию(Storage=auto
в /etc/systemd/journald.conf
и /var/log/journal/
не существует ), а в не -постоянном режиме journald
не поддерживает разделение журналов, поэтому все журналы оказываются в одном месте в /run/log/journal
. ] несмотря на то, что разделение включено по умолчанию --см. SplitMode
в man journald.conf
. Включение постоянства исправляет это.
TL;DR :включить постоянство, заменив Storage=persistent
на /etc/systemd/journald.conf
и перезагрузив journald с помощью sudo systemctl restart systemd-journald
.
Альтернативный поиск с помощьюsudo journalctl _SYSTEMD_USER_UNIT=chatty.service
Более подробная информация находится наhttps://lists.freedesktop.org/archives/systemd-devel/2016-October/037554.html
sed
по умолчанию использует базовые регулярные выражения POSIX (BRE ). \s
представляет собой PCRE (Perl -совместимое регулярное выражение ), которое эквивалентно BRE [[:blank:]]
(, я думаю, соответствует пробелам и табуляциям или, возможно, [[:space:]]
соответствует большему набору пробельных символов ). Модификатор +
является расширенным регулярным выражением POSIX (ERE ), который эквивалентен модификатору \{1,\}
как BRE.
Так что попробуй
sed 's/\.[[:blank:]].*//'
вместо этого. Вы можете заменить [[:blank:]]
символом пробела, если вам не нужно сопоставлять вкладки:
sed 's/\..*//'
Обратите внимание, что нет необходимости делать подстановку с флагом g
, так как всегда будет только одно совпадение. Кроме того, .+
, который вы используете, можно просто заменить на .*
вместо .\{1,\}
, так как нам все равно, есть ли вообще какие-либо другие символы (, просто удалите их все ).
Связанные:
Если вы используете Gnu/Linux или любую другую Gnu, у вас будет Gnu sed. В Gnu sed есть опция -r
, которая позволяет это сделать.
Добавить параметр -r
для изменения диалекта регулярного выражения.
напр.
echo "abc.ztx.com. A 132.123.12.44" | sed -r 's/\.\s.+//g'
Ваш вопрос конкретно касается sed
, но я бы использовал для этого cut
.
Если вы можете жить с точкой в конце, то:
$ echo "abc.ztx.com. A 132.123.12.44" | cut -d" " -f1
abc.ztx.com.
Если вы не можете жить с точкой в конце, тогда:
$ echo "abc.ztx.com. A 132.123.12.44" | cut -d" " -f1 | rev | cut -d. -f2- | rev
abc.ztx.com
или:
$ echo "abc.ztx.com. A 132.123.12.44" | cut -d" " -f1 | sed -e "s/\.$//"
abc.ztx.com
Еще одна возможность использования awk
с.
(точкой + пробелом ), указанными в качестве разделителя полей:
echo "abc.ztx.com. A 132.123.12.44" | awk -F '\\. ' '{print $1}'
abc.ztx.com