Чтобы сделать это с помощью встроенных -утилит, вы можете следовать этому немного более ручному процессу, используя bluetoothctl
.
hcitool scan # to get the MAC address of your device
bluetoothctl
agent on
scan on # wait for your device's address to show up here
scan off
trust MAC_ADDRESS
pair MAC_ADDRRESS
connect MAC_ADDRESS
Сообщения в этой проблеме Github предлагают способ написания скрипта, но это не сработало для меня, так как мне нужно было вручную ждать результатов сканирования.
Поскольку все задания заканчиваются пустой строкой, вы можете использовать perl
в «режиме абзаца» (, что означает, что он рассматривает \n\n
, пустую строку, как разделитель записей, эффективно обрабатывая «абзацы». как "линии"):
$ perl -00lne 'print if /insert:\s+PPC_SA[153]\s/' file
insert: PPC_SA1 job_type: CMD
name: PPC
command: sa
machine: P
owner: cat
permission:
date_conditions: 0
description: "Run program"
std_out_file: "/home/PROD/autosys/logs/${AUTO_JOB_NAME}_`date +%y%m%d`.log"
std_err_file: "/home/PROD/autosys/logs/${AUTO_JOB_NAME}_`date +%y%m%d`.err"
alarm_if_fail: 1
group: P
resources:
insert: PPC_SA3 job_type: CMD
name: PPC
command: sa
machine: P
owner: cat
permission:
date_conditions: 0
description: "Run program"
std_out_file: "/home/PROD/autosys/logs/${AUTO_JOB_NAME}_`date +%y%m%d`.log"
insert: PPC_SA5 job_type: CMD
name: PPC
command: sa
machine: P
owner: cat
permission:
date_conditions: 0
-00
включает режим абзаца, а затем сценарий печатает все записи, соответствующие insert:\s+PPC_SA
, за которыми следует один из 1
, 5
или 3
и еще один пробельный символ.
Конечно, это не очень практично, если у вас много целевых идентификаторов, поэтому вы также можете обобщить это на:
cat file |
perl -00lne 'BEGIN{ $k{$_}++ for @ARGV; @ARGV=()} /insert:\s+(\S+)/; print if $k{$1}' PPC_SA1 PPC_SA5 PPC_SA3
Или, как вариант, вы можете использовать awk
. Сохраните ваши целевые идентификаторы в файле (с именем target_ids
, в этом примере ), по одному в строке, и запустите:
$ awk '(NR==FNR){a[$1]++; next}
{
if(/insert:/ && $2 in a){want=1}
if(want){print}
if(/^\s*$/){want=0}
}' target_ids file
insert: PPC_SA1 job_type: CMD
name: PPC
command: sa
machine: P
owner: cat
permission:
date_conditions: 0
description: "Run program"
std_out_file: "/home/PROD/autosys/logs/${AUTO_JOB_NAME}_`date +%y%m%d`.log"
std_err_file: "/home/PROD/autosys/logs/${AUTO_JOB_NAME}_`date +%y%m%d`.err"
alarm_if_fail: 1
group: P
resources:
insert: PPC_SA3 job_type: CMD
name: PPC
command: sa
machine: P
owner: cat
permission:
date_conditions: 0
description: "Run program"
std_out_file: "/home/PROD/autosys/logs/${AUTO_JOB_NAME}_`date +%y%m%d`.log"
insert: PPC_SA5 job_type: CMD
name: PPC
command: sa
machine: P
owner: cat
permission:
date_conditions: 0
А что насчет этого?
awk 'NR==FNR{ trgtJbs[$0]; next } ($2 in trgtJbs)' targetJobs RS='' allJobs
сначала мы читаем все targetJobs из файла targetJobs
, затем, поскольку вы упомянули, что каждое задание в файлеallJobs
отделяется пустой строкой, поэтому затем мы устанавливаем запись R . ] S разделитель для этого второго файла на пустую строку и проверка существования второго поля каждого блока заданий -в массиве trgtJbs
, который мы использовали, после чего они будут выведены.
На всякий случай, если вы хотите сохранить эту пустую строку в выводе, выполните:
awk 'NR==FNR{ trgtJbs[$0]; next }
($2 in trgtJbs){ print sep $0; sep=ORS }' targetJobs RS='' allJobs
С помощью awk
в режиме абзаца вы можете выбрать нужные записи:
awk -v RS= -v FS='\n' -v ORS='\n\n' '$1~/PPC_SA(1|3|5)[[:space:]]+/' file
insert: PPC_SA1 job_type: CMD
name: PPC
command: sa
machine: P
owner: cat
permission:
date_conditions: 0
description: "Run program"
std_out_file: "/home/PROD/autosys/logs/${AUTO_JOB_NAME}_`date +%y%m%d`.log"
std_err_file: "/home/PROD/autosys/logs/${AUTO_JOB_NAME}_`date +%y%m%d`.err"
alarm_if_fail: 1
group: P
resources:
insert: PPC_SA3 job_type: CMD
name: PPC
command: sa
machine: P
owner: cat
permission:
date_conditions: 0
description: "Run program"
std_out_file: "/home/PROD/autosys/logs/${AUTO_JOB_NAME}_`date +%y%m%d`.log"
insert: PPC_SA5 job_type: CMD
name: PPC
command: sa
machine: P
owner: cat
permission:
date_conditions: 0
Использованиеawk
:
awk '/insert:\s+PPC_SA[135]\s+/,/^$/' input