Eu tenho um comando Android cuja saída é a seguinte:
$adb shell "head -20 /d/dma_buf/bufinfo"
Dma-buf Objects:
size flags mode count exp_name buf name
00020480 00000002 00000007 00000003 ion-system-660-vendor.qti.hard dmabuf210
Attached Devices:
Total 0 devices attached
09469952 00000002 00000007 00000003 ion-system-660-vendor.qti.hard dmabuf209
Attached Devices:
kgsl-3d0
Total 1 devices attached
00020480 00000002 00000007 00000003 ion-system-660-vendor.qti.hard dmabuf208
Attached Devices:
Total 0 devices attached
09469952 00000002 00000007 00000003 ion-system-660-vendor.qti.hard dmabuf207
Attached Devices:
kgsl-3d0
Total 1 devices attached
Existem entradas semelhantes no arquivo. Agora, o que eu quero é extrair o pid do campo exp_name (o kernel não tem acesso ao nome completo maior que 16 bytes) e obter o nome completo desse processo da saída do ps com ps pid -o comm=
cf. [1] e imprima-o junto com $1
da saída awk. Eu estou preso em como recuperar isso. Eu comecei com o seguinte comando
$adb shell "sed -n '/dmabuf/p' /d/dma_buf/bufinfo|head -10"|awk '
BEGIN { touch temp} {echo $5 > temp; pid = $(cut -d '-' -f 3,3 temp);}
END { rm temp}
'
Mas isso gera erros de sintaxe como:
awk: cmd. line:2: BEGIN { touch temp} {echo $5 > temp; pid = $(cut -d - -f 3,3 temp);}
awk: cmd. line:2: ^ syntax error
[1] Há um problema com o Android awk, devido ao qual estou recorrendo aos utilitários da máquina host do Linux.
$adb shell "awk '/dmabuf/{print}' /d/dma_buf/bufinfo|head -3"
00020480 00000002 00000007 00000003 ion-system-660-vendor.qti.hard dmabuf210
09469952 00000002 00000007 00000003 ion-system-660-vendor.qti.hard dmabuf209
00020480 00000002 00000007 00000003 ion-system-660-vendor.qti.hard dmabuf208
adb shell "awk '/dmabuf/{print NF}' /d/dma_buf/bufinfo|head -3"
6
6
6
Portanto, esta saída tem 6 campos (separados por tabulações). No entanto, quando tento imprimir os campos individuais, isso não acontece e ainda imprime a linha inteira.
$adb shell "awk '/dmabuf/{print $4}' /d/dma_buf/bufinfo|head -3"
00020480 00000002 00000007 00000003 ion-system-660-vendor.qti.hard dmabuf210
09469952 00000002 00000007 00000003 ion-system-660-vendor.qti.hard dmabuf209
00020480 00000002 00000007 00000003 ion-system-660-vendor.qti.hard dmabuf208