
В моем файле я хочу заменить число на*
Пример:
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'