Это заменит все цифры в квадратных скобках на звездочки:
sed 's/\[[0-9]*\]/\[*\]/g'
В моем файле я хочу заменить номер на *
Пример:
data[0] ---> data[*]
У меня есть data[0]
к, data[127]
а также хотят, чтобы сделать для всего файла. Так как же мне сделать только номер?
Я пробовал с командой
sed 's/[[0-9][0-9]]/[*]/g'
но это не работает должным образом.
Поэтому, пожалуйста, ведите меня.
Это заменит все цифры в квадратных скобках на звездочки:
sed 's/\[[0-9]*\]/\[*\]/g'
Ответ: Вот как вы можете изменить свое предварительное выражение SED ( sed 's/[[0-9][0-9]]/[*]/g'
):
sed -E 's/\[[0-9]]/[*]/g'
Объяснение:
экранируйте начальную квадратную скобку [
с обратной косой чертой, \
потому что вы хотите, чтобы выражение совпадало с литералом, [
а не с любым из символов, которые вы пишете в квадратных скобках. Последующие квадратные скобки не нуждаются в экранировании.
укажите, сколько цифр вы хотите сопоставить: означает любое натуральное число, начиная с
1
и до 3
. Чтобы это работало, вам нужно включить расширенные регулярные выражения с помощью -E
переключателя (без него вы могли бы быть довольны sed 's/\[[0-9]*]/[*]/g'
). Он должен быть доступен в вашей sed
версии, согласно man sed
:
опция -E поддерживалась GNU sed в течение многих лет и теперь включена в POSIX.
Альтернатива Perl здесь:
perl -pe 's/data\[\K\d+(?=])/*/g'