Извлечь определенную строку из файлов журнала

На всякий случай, если кому-то еще нужно решение, вместо использования только sudo у меня сработало sudo systemd -run

$ sudo systemd-run --uid=1009 --slice=user-1009 sleep 10

# ps -U 1009 ; systemctl status user-1009.slice

PID TTY TIME CMD

20199 ? 00:00:00 sleep

● user-1009.slice

Loaded: loaded

Active: active since Sun 2018-09-02 01:46:57 EDT; 2s ago

CGroup: /user.slice/user-1009.slice

      └─run-20198.service

        └─20199 /bin/sleep 10

https://www.reddit.com/r/linuxquestions/comments/9c9dka/issue_with_systemctl_setproperty_user1009slice

0
03.06.2021, 13:33
2 ответа

Awk может быть проще, чем grep для чего-то подобного.

awk 'c && !--c; $2 == "UTT" {c=3}' file

Это устанавливает счетчик всякий раз, когда строка «UTT» совпадает. Если счетчик установлен, уменьшите переменную и напечатайте строку, если счетчик вернулся к нулю. Вы можете сопоставлять строки «UTT» различными способами, например. регулярное выражение /^ - UTT/ {c=3}или соответствие строки index($0, " - UTT") == 1 {c=3}. Условие $2 == "UTT"соответствует, когда вторым полем является строка "UTT".

2
28.07.2021, 11:27

Использованиеawk:

awk '/UTT/{a=NR+3} NR==a' input

В этой команде, если UTTнайдено, aустанавливается в NR+3. NR==aпечатает требуемый вывод.

2
28.07.2021, 11:27

Теги

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