sed: Сопоставьте эту запятую или эту, но не обе

AVC показывает то же имя процесса, если я нахожу его в /var/log/audit/audit.log. Так что это не ошибка в графическом интерфейсе.

Здесь есть два момента. Во-первых, процесс systemd, разветвленный для службы, «переименовывает» себя перед execиспользованием программы.

Во-вторых, для имени процесса не выделяется дополнительное место, поэтому оно не может быть длиннее /sbin/init. (Поведение перед опцией ядра init=оставлено читателю в качестве упражнения ). Конец имени программы считается более интересным для сохранения, чем начало, поскольку «первый бит может быть просто« systemd -»».

Согласно TODO, это будет решено с помощью «PR _SET _PROCTITLE _AREA, если она станет доступной в ядре», т. е. это позволит избежать необходимости усекать имя процесса.

https://github.com/systemd/systemd/blob/782c925f7fa2e6e716ca9ac901954f3349d07ad8/src/core/execute.c#L1237

0
22.04.2019, 22:03
1 ответ

Я предлагаю вам не полагаться на ,перед (), а вместо этого полагаться на него после с \?. В любом случае, не имеет значения, есть ли у вас одно или несколько пространств. Что-то подобное должно сделать это за вас:

sed -i 's/("[^ ]*", [1-9][0-9]*),\?//g; s/,\s*;/;/' dump.sql

Обратите внимание, что \?означает, что ,не является обязательным символом. Если бы его не было, совпадение все равно было бы.

0
28.01.2020, 03:47

Теги

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