Для grep
, sed
и awk
можно вынудить вывод быть буферизованной строкой. Можно использовать:
grep --line-buffered
Вывод силы, чтобы быть буферизованной строкой. По умолчанию вывод является строкой, буферизованной, когда стандартный вывод является терминалом и блоком, буферизованным иначе.
sed -u
Сделайте выходную строку буферизованной.
Посмотрите эту страницу для получения дополнительной информации: http://www.perkin.org.uk/posts/how-to-fix-stdio-buffering.html
Я смог понять это. Вот ответ для будущих посещений вопроса:
sed -r 's/(0[Xx][A-Fa-f0-9]+)\[([0-9]+)\]/\1 \2/g'
Я думаю, что Вы ищете, что-то вроде этого:
sed -r 's/(0[xX][[:xdigit:]]+)\[([[:digit:]]+)\]/\1 \2/g'
например:
$ sed -r 's/(0[xX][[:xdigit:]]+)\[([[:digit:]]+)\]/\1 \2/g' <<EOF
> mem+offset: 0x2322AD4[3] 0x232BEEF[12]
> unchanged: 0x22343AF word[2] 7E[word]
> EOF
mem+offset: 0x2322AD4 3 0x232BEEF 12
unchanged: 0x22343AF word[2] 7E[word]
$
Примечание: без 0[xX] это полагало бы, что d[2] заменим во второй входной строке.
sed
deosn't распознают :digit:
?. Однако я смог понять это, прежде чем я пересмотрел свой вопрос. Спасибо все же.
– Fadi Hanna AL-Kass
29.07.2013, 04:18
-E
вместо -r
; У меня нет одного из тех для попытки. Но примером выше является cut&paste от моего терминала (человечность 12.04). (Это могла также потенциально быть Ваша локаль, я предполагаю.)
– rici
29.07.2013, 05:13