заменить номер на определенный шаблон звезды для всего файла

заменить номер на определенный шаблон звезды для всего файла

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

Пример:

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

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

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

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

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

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

решение1

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

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

решение2

Отвечать:Вот как вы можете изменить свое предварительное выражение 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'

Связанный контент