Если вы можете изменить код:
#include <malloc.h>
#include <stdio.h>
void dumpMallinfo(void) {
struct mallinfo m = mallinfo();
printf("uordblks = %d\nfordblks = %d\n", m.uordblks, m.fordblks);
}
В GDB вы можете call dumpMallinfo()
.
Вот как это сделать с помощью sed
grep SRC=\'.*\' | sed 's/SRC=.\(.*\)./\1/'
Всегда ли строки для сопоставления имеют формат SRC = 'nnn'
? Затем вы можете использовать
grep SRC | cut -d"'" -f2
Вы не можете это с помощью простой команды grep. Как указано на странице руководства в моем окне: «grep - печатать строки, соответствующие шаблону», grep печатает только строки, а не их части.
Я бы рекомендовал awk, поскольку он может выполнять как сопоставление с образцом, так и извлечение подстроки:
awk -F\' ' /SRC/ {print $2}'
просто sed будет делать
$ echo SRC='999' | sed '/SRC/s/SRC=//'
999
Grep платформы или общее регулярное выражение?
Regex
SRC\=\'(\d{3})\'
зависит на вашей платформе / языке.
в Ruby:
string = "SRC = '999'"
string.match(/([0-9]{3})/).to_s.to_i
вернет целое число
Вы можете использовать параметр -o
в grep
, чтобы вернуть только ту часть строки, которая соответствует регулярному выражению:
echo "SRC='999'" | grep -o -E '[0-9]{3}'