источник 1234567890
, регулярное выражение ((?<=\d)\d{3})*\b
может соответствовать: 234567890
, поэтому я думаю, sed
должен заменить 234567890
TEST
, но результат: 1234567890
, почему?Регулярное выражение и команда sed: echo 1234567890 | sed 's/((? <= D) d {3}) * b/TEST /'
0
A
ответ
1
просмотра назад не поддерживается СЕПГ. вы можете попробовать ssed (super sed), он поддерживает режим perl (-R), тогда вы можете передать ему регулярное выражение perl style. например смотреть вперед/назад.
посмотреть список функций:
0
Вам нужно переписать регулярное выражение без просмотра назад:
s/(\d)(?:\d{3})*\b/\1TEST
Я думаю, последняя версия GNU СЭД поддерживает -R, а также. См. Здесь: http://sed.sourceforge.net – sinelaw