как, скажем, у меня есть ряд чисел, которые составляют телефонный номер и как

##########

и я хочу отформатировать их как:

### - ### - ####

вставка вставляет только новые строки, и я не знаю, как сделать выражение, как

sed (s/[0-9]/TheNumberIFound -/)//3//6

так есть ли какой-то способ, которым я могу попросить sed просто добавить что-то после сопоставленного шаблона или заменить сопоставленный шаблон самим собой или каким-нибудь другим символом?

1 ответ1

1
$ echo "1234567890" | sed -re 's/([0-9]{3})([0-9]{3})([0-9]{4})/\1-\2-\3/g'
123-456-7890
  • [0-9] соответствует любой цифре в одной позиции в номере телефона.
  • {3} сообщает sed, что он должен соответствовать шаблону, представленному 3 раза.
  • ( И ) (круглые скобки), окружающие три повторения этих журналов, совпадают числа в "воспоминаниях"
    затем "воспоминания" "вспоминаются" с \1 для первой круглой скобки, \2 для второй и так далее.
  • Поэтому \1-\2-\3 делает ваш переформатированный номер телефона.
  • Добавьте g в конце, чтобы sed делал это более одного раза в строке.

Намеренно пытался удержать язык на уровне 'noob' ;-p

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