2

В моем файле я хочу заменить номер на *

Пример:

data[0] ---> data[*]

У меня есть data[0] к data[127] а также хочу сделать для всего файла. Так как же мне сделать только номер?

Я пробовал с командой

sed 's/[[0-9][0-9]]/[*]/g'

но это не работает должным образом.

Поэтому, пожалуйста, ведите меня.

2 ответа2

0

Ответ: Вот как вы можете изменить свое предварительное выражение SED (sed 's/[[0-9][0-9]]/[*]/g'):

sed -E 's/\[[0-9]{1,3}]/[*]/g'

Объяснение:

  • экранируйте начальные квадратные скобки [ с обратной косой чертой \ потому что вы хотите, чтобы выражение совпадало с литералом [ в отличие от любых символов, которые вы пишете в квадратных скобках. Последующие квадратные скобки не нуждаются в экранировании.

  • укажите, сколько цифр вы хотите сопоставить: {1,3} означает любое натуральное число от 1 до 3 . Чтобы это работало, вам нужно включить расширенные регулярные выражения с ключом -E (без него вы могли бы довольствоваться sed 's/\[[0-9]*]/[*]/g'). Он должен быть доступен в вашем sed так как, согласно man sed:

    опция -E поддерживалась GNU sed в течение многих лет и теперь включена в POSIX.


Альтернатива Perl здесь:

perl -pe 's/data\[\K\d+(?=])/*/g'
0

Это заменит все цифры в квадратных скобках на звездочки:

sed 's/\[[0-9]*\]/\[*\]/g'

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