У меня есть следующая строка (в файле с именем 1atp.pdb:

MASTER      421    1    5   16    9    0   12    6 3070    2   66   29  

И я использую sed:

grep MASTER 1atp.pdb | sed 's/[0-9]*/xddddd/'

который дает:

xdddddMASTER      421    1    5   16    9    0   12    6 3070    2   66   29

До MASTER нет персонажа, что может быть не так?

1 ответ1

1

Это регулярное выражение.

То, что происходит, * соответствует 0 символам, поэтому соответствует позиции в начале. Поэтому попробуйте + или {1,} либо означает 1 символ или более. Кроме того, используйте sed -r чтобы обеспечить распознавание + или {1,} . например, sed -r 's/[0-9]+/xddddd/' или sed -r 's/[0-9]{1,}/xddddd/' или -R даже лучше, если он у вас есть, он поддерживает прогноз, например, (?=c) хотя все, что вам нужно, это -r .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .