Изменить формат номера - PullRequest
0 голосов
/ 18 июня 2010

У меня много строк содержит XXXXXXXXX-XXX.XXX числовой формат. Я хочу изменить номер XXXXXXXXX-XXX.XXX на XX.XXX.XXX.X-XXX.XXX

XXXXXXXXX-XXX.XXX = случайное число из 15 цифр

Кто-нибудь может мне помочь? Заранее спасибо

Ответы [ 3 ]

2 голосов
/ 18 июня 2010

Общее регулярное выражение: найдите (\d{2})(\d{3})(\d{3})(\d)-(\d{3}\.\d{3}) и замените на \1.\2.\3.\4-\5.

Я не знаю достаточно хорошо, но я думаю, что синтаксис там немного другой. Попробуйте это:

sed 's/\([0-9]\{2\}\)\([0-9]\{3\}\)\([0-9]\{3\}\)\([0-9]\)-\([0-9]\{3\}\.[0-9]\{3\}\)/\1.\2.\3.\4-\5/')
0 голосов
/ 18 июня 2010

Это ужасно (потому что sed использует POSIX regex), но должно работать:

sed 's/\([0-9]\{2\}\)\([0-9]\{3\}\)\([0-9]\{3\}\)\([0-9]\)\(-[0-9]\{3\}\.[0-9]\{3\}\)/\1.\2.\3.\4\5/g'
0 голосов
/ 18 июня 2010

Попробуйте это:

 echo "987654321" | sed 's/\([0-9][0-9]\)\([0-9][0-9][0-9]\)\([0-9][0-9][0-9]\)\([0-9]\)/\1.\2.\3.\4/'

(выводит 98.765.432.1)

Затем для чтения ввода из файла:

sed 's/\([0-9][0-9]\)\([0-9][0-9][0-9]\)\([0-9][0-9][0-9]\)\([0-9]\)/\1.\2.\3.\4/' in.txt

и для записив новый файл:

sed 's/\([0-9][0-9]\)\([0-9][0-9][0-9]\)\([0-9][0-9][0-9]\)\([0-9]\)/\1.\2.\3.\4/' in.txt > out.txt

Полагаю, вы могли бы его уточнить, но это общая идея.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...