Использование Sed для замены символа за шаблоном - PullRequest
0 голосов
/ 18 апреля 2020

Я работаю над файлом со «специальным» шаблоном, и мне нужно согласовать файл, чтобы импортировать его позже.

Пример:

mail@adress.dot;city;phone
mail@adress.dot:city;phone
mail@adress.dot:city;phone
mail@adress.dot;city;phone

Я пытался:

sed -i 's/\:/;/g' myfiles

Но это заменяет все :, и мне нужно заменить только : после почтового адреса. И почтовые адреса не все одинаковые, все от разных провайдеров.

Пример, чтобы выяснить, в чем проблема с ; или :

john@doe.dot;city;000:000:000
john@do.us:city;000;000;000 

1 Ответ

0 голосов
/ 18 апреля 2020

Во-первых, добавьте поля и разделители в массивы. Во-вторых, отформатируйте вывод как требуется.

awk '
{
    split($0, field, /[;:]/)
    split($0, delim, /[^;:]+/)
    delim[2] = ":"
    for (i = 1; i in field; i++)
        printf "%s", field[i] delim[i + 1]
    printf "\n"
}
' input.file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...