Bash: переименовать дубликаты для сгенерированных значений в файле csv - PullRequest
0 голосов
/ 28 мая 2020

Существует сценарий bash, который создает адреса электронной почты в следующем формате: первая буква имени и полная фамилия, строчные буквы +@example.com.

файл csv:

id,location,name,email
1,1,John Smith,ab@dc.com
2,2,Paul Robinson,
3,3,Fidel Guererro,qw@er.com
4,4,John Smith,
...

Столбец Имя может содержать дубликаты. В этом случае скрипт должен добавить 1 в адрес электронной почты ( например, для id = 1 - jsmith@example.com, для id = 4 - jsmith1@example.com). Я пробую следующий сценарий:

#!/bin/bash

while IFS=, read -r col1 col2 col3 col4
do
            if [ "$col1" == Id ]; then
                echo "${col1},${col2},${col3},${col4}"
                continue
            fi

    firstinitial=${col3:0:1}
    surname=$(echo $col3 | cut -d' ' -f2)

            if [[ $col4 ==  $col4 ]]; then
                col4=${firstinitial,}${surname,,}1@example.com
                else
                col4=${firstinitial,}${surname,,}@example.com
            fi

    echo "${col1},${col2},${col3},${col4}"
done < acc.csv

Я получаю все адреса с 1. Как мне изменить этот сценарий?

Ожидаемый результат:

id,location,name,email
1,1,John Smith,jsmith@example.com
2,2,Paul Robinson,probinson@example.com
3,3,Fidel Guererro,fguererro@example.com
4,4,John Smith,jsmith1@example.com
...
...