Sed вставляя тире в строку - PullRequest
       30

Sed вставляя тире в строку

4 голосов
/ 02 августа 2011

У меня есть 14-символьная строка, содержащая цифры.Как мне вставить символ в него в определенном месте, то есть в 4-м?Итак, если у меня есть такая строка: xxxxxxxxxxxxxx, как мне изменить ее на что-то вроде этого: xxxx-xx-xxxxxxxx?(х = цифра)

Спасибо!Ирек

Ответы [ 2 ]

5 голосов
/ 02 августа 2011

Если ваши строки только содержат ваши цифры, вы можете сгруппировать первые четыре символа в группу:

\(....\)

и следующие два в другой группе:

\(....\)\(..\)

Затем вы просто заменяете его обратной ссылкой на первую группу (\1), тире, обратной ссылкой на вторую группу (\2) и другим тире:

\1-\2-

Результат:

$ echo 12345678900000 | sed 's/\(....\)\(..\)/\1-\2-/'
1234-56-78900000
1 голос
/ 09 июля 2013

Спасибо brandizzi за ваш ответ, он помог мне заставить мой работать, используя немного другой метод

sed 's/^\(.\{4\}\)\(.\{2\}\)/\1-\2-/' 

4 и 2 работают, чтобы заменить 4-й символ, а затем 2-й после этого тире.

Итак, ххххххх становится хххх-хх-хх

...