匹配字符串后过滤最后一个单词

匹配字符串后过滤最后一个单词

我需要从 bash 中命令的返回字符串中过滤出一些十六进制值,例如:

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

将返回 hexVal 的值:

Max Enhanced Are Size [MAX_ENH_SIZE_MULT]: 0x000bd8

现在,我需要将 hexVal 的值返回为:

0x000bd8

答案1

grep您可以使用而不是使用,awk因为它在模式匹配和打印匹配字段时更有用

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

您还可以删除上面结果中的前导空格

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

如果您要使用grep并安装了 GNU 版本,请使用 PCRE 模式

grep -oP '^Max Enhanced Area Size.*:(\s+)\K(.+)'

相关内容