Вычислите и круглые числа в ударе

Хорошо, по крайней мере, я частично обнаружил, почему hcitool требует полномочий пользователя root для сканирования LE, но не для нормального сканирования. Частично средства, что я определил местоположение системного вызова, который перестал работать из-за недостаточных полномочий при выполнении сканирования LE как обычного пользователя.

"Операция, не разрешенная" ошибка, сгенерирована writev системным вызовом со стеком вызовов, блокирующим следующим образом (все функции, реализованные в hci.c, посмотрите исходный код блюза):

hci_le_set_scan_parameters -> hci_send_req -> hci_send_cmd -> writev

Нормальное сканирование ("hcitool сканирование"), по-видимому, не должно отправлять запросы к контроллеру, но использует специализированный запрос ioctl, звоня:

ioctl(dd, HCIINQUIRY, (unsigned long) buf);

Кажется, что доступ для записи к контроллеру Bluetooth ограничивается, но почему и как я могу деактивировать это?

3
13.04.2017, 15:36
3 ответа

Через awk и сохранение среднего столбца:

awk '{printf("%.f ", ($1/65)+0.5)}1' infile > outfile
24 1533 C_P.doc
11 691 C_M.doc
14 905 G_S.doc
15 945 J_Z.doc
24 1549 J_M.doc
27 1701 L_B.doc

через awk и без среднего столбца:

awk '{printf("%.f", ($1/65)+0.5); $1=""}1' infile > outfile
24 C_P.doc
11 C_M.doc
14 G_S.doc
15 J_Z.doc
24 J_M.doc
27 L_B.doc

Обратите внимание, что +0,5 используется в качестве замены функции ceil() и округляется до следующего числа. И 1 в конце приобретает значение по умолчанию.

2
27.01.2020, 21:23

можно использовать perl:

$ perl -MPOSIX=ceil -anle '$F[0] = ceil($F[0]/65);print "@F"' file
24 C_P.doc
11 C_M.doc
14 G_S.doc
15 J_Z.doc
24 J_M.doc
27 L_B.doc
1
27.01.2020, 21:23

Если вы понимаете «Неужели с использованием Python в оболочке и предполагая, что A.txt - ваш файл:

[sreeraj@server ~]$ cat a.txt
1533 C_P.doc
691 C_M.doc
905 G_S.doc
945 J_Z.doc
1549 J_M.doc
1701 L_B.doc
[sreeraj@server ~]$ for i in $(awk -v c=65 '{ print $1/c }' a.txt) ; do python -c 'print int(round('$i',0))' ; done >> b.txt
[sreeraj@server ~]$ paste b.txt a.txt > c.txt
[sreeraj@server ~]$ cat c.txt
24      1533 C_P.doc
11      691 C_M.doc
14      905 G_S.doc
15      945 J_Z.doc
24      1549 J_M.doc
26      1701 L_B.doc
[sreeraj@server ~]$

Это создаст файл c.txt с нужным выходом.

Как это работает:

Он использует awk для разделения значений в 1-м столбце A.TXT на 65, а затем использовать Python встроенный функция Раунд () , чтобы округлить десятичные дроби. Затем мы создаем файл c.txt с выходом из цикла и используете , чтобы объединить C.Txt и A.Txt

0
27.01.2020, 21:23

Теги

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