Filtrar a última palavra depois de corresponder a uma string

0

Eu preciso filtrar algum valor hexadecimal de uma string de retorno de um comando no bash, por exemplo:

hexVal='mmc extcsd read /dev/mmcblk1 | grep 'Max Enhanced Area Size''

Retornará o valor de hexVal como:

Max Enhanced Are Size [MAX_ENH_SIZE_MULT]: 0x000bd8

Agora, preciso que o valor de hexVal seja retornado como:

0x000bd8
    
por Hari 02.11.2018 / 04:50

1 resposta

0

Em vez de grep , você pode usar awk , pois é mais útil na correspondência de padrões e na impressão dos campos correspondentes

mmc extcsd read /dev/mmcblk1 | awk -F: '$1 ~ "^""Max Enhanced Area Size" { print $2 }'

Você também pode remover o espaço principal no resultado acima

awk -F: '$1 ~ "^""Max Enhanced Area Size" { sub(/^[[:space:]]/,"",$2); print $2 }'

Se você for usar grep e tiver a versão GNU instalada, use o modo PCRE

grep -oP '^Max Enhanced Area Size.*:(\s+)\K(.+)'
    
por 02.11.2018 / 04:57