Проблема с правилами udev

Это можно сделать с помощью идиоматического awk:

awk '$1=$1' RS= OFS= infile

Выход:

timestamp=201706291035.....;line 2;line 3;line 4;line 5;line 6;line 7;
timestamp=201706291038.....;line 2;line 3;line 4;line 5;line 6;

Пояснение

Здесь много всего упаковано. В основном есть три шага:

  1. Сначала ввод разбивается на записи на основе разделителя записей(RS).
  2. Каждая запись разбивается на поля на основе разделителя полей(FS).
  3. При печати разделитель полей вывода(OFS)используется в качестве разделителя полей.

Когда awk анализирует входные данные, действует несколько неявных правил. Данные считываются по одной записи за раз, записи разделяютсяRS(по умолчанию\n). Когда RSпусто, как в приведенном выше примере, пустая строка разделяет записи. Таким образом, каждый раздел считывается как запись.

Чтобы заставить awkзаменить FSна OFS, мы устанавливаем первое поле $1на себя.

Редактировать

Как отметил steeldriver , ОП хочет удалить конечные точки с запятой -. Беззастенчиво скопировано:

awk '{ sub(/;$/,"",$NF); $1=$1 } 1' RS= OFS= infile
2
11.08.2019, 23:32
1 ответ

Как сказано вman udev:

   RUN{type}
       Add a program to the list of programs to be executed after
       processing all the rules for a specific event, depending on
       "type":

       "program"
           Execute an external program specified as the assigned
           value. If no absolute path is given, the program is
           expected to live in /lib/udev; otherwise, the absolute
           path must be specified.

Вы также можете проверить, какие udevжурналы:

Aug 11 21:57:43 ja-VirtualBox systemd-udevd[2998]: failed to execute '/lib/udev/./scripts/icleverkeybindings.sh' './scripts/icleverkeybindings.sh': No such file or directory

Или не -системы systemd:

[769712.027218] udevd[13015]: failed to execute '/lib/udev/./scripts/icleverkeybindings.sh' './scripts/icleverkeybindings.sh': No such file or directory

При этом вы должны либо пройти абсолютный путь к icleverkeybindings.shв вашем правиле udev примерно так:

ACTION=="add", SUBSYSTEM=="bluetooth", RUN+="/path/to/icleverkeybindings.sh"

или поместите icleverkeybindings.shв /lib/udevи просто используйте имя файла в правиле udev:

ACTION=="add", SUBSYSTEM=="bluetooth", RUN+="icleverkeybindings.sh"

В обоих случаях необходимо убедиться, что icleverkeybindings.shимеет исполняемый бит, потому что в противном случае:

Aug 11 22:07:49 ja-VirtualBox systemd-udevd[3345]: failed to execute '/lib/udev/icleverkeybindings.sh' 'icleverkeybindings.sh': Permission denied
Aug 11 22:07:49 ja-VirtualBox systemd-udevd[3325]: Process 'icleverkeybindings.sh' failed with exit code 2.
1
27.01.2020, 22:16

Теги

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