получение подстроки от регулярного выражения

Если вы можете изменить код:

#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().

7
задан Peter Boughton 7 November 2009 в 11:49
поделиться

8 ответов

Вот как это сделать с помощью sed

grep SRC=\'.*\' | sed 's/SRC=.\(.*\)./\1/'
4
ответ дан 7 December 2019 в 01:22
поделиться

Всегда ли строки для сопоставления имеют формат SRC = 'nnn' ? Затем вы можете использовать

grep SRC | cut -d"'" -f2
2
ответ дан 7 December 2019 в 01:22
поделиться

Вы не можете это с помощью простой команды grep. Как указано на странице руководства в моем окне: «grep - печатать строки, соответствующие шаблону», grep печатает только строки, а не их части.

Я бы рекомендовал awk, поскольку он может выполнять как сопоставление с образцом, так и извлечение подстроки:

awk -F\' ' /SRC/ {print $2}'
1
ответ дан 7 December 2019 в 01:22
поделиться

просто sed будет делать

$ echo SRC='999' | sed '/SRC/s/SRC=//'
999
1
ответ дан 7 December 2019 в 01:22
поделиться

Grep платформы или общее регулярное выражение?

Regex

SRC\=\'(\d{3})\'
0
ответ дан 7 December 2019 в 01:22
поделиться

почему grep? Как насчет ..

substr("SRC='999'",6,3)
0
ответ дан 7 December 2019 в 01:22
поделиться

зависит на вашей платформе / языке.

в Ruby:

string = "SRC = '999'"

string.match(/([0-9]{3})/).to_s.to_i 

вернет целое число

-1
ответ дан 7 December 2019 в 01:22
поделиться

Вы можете использовать параметр -o в grep , чтобы вернуть только ту часть строки, которая соответствует регулярному выражению:

echo "SRC='999'" | grep -o -E '[0-9]{3}'
3
ответ дан 7 December 2019 в 01:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: