我需要从 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(.+)'