Как заменить строку, получающую входные данные из другого файла в скрипте оболочки Linux

#linux #shell #replace

Вопрос:

у меня есть существующий идентификатор пользователя, и я хотел изменить эти идентификаторы на имя пользователя, например

UserID.txt

 Group1 = 1234,1002,2004
group2 = 3214,0032,6632
1234 = Read
6632 = Write
 

Input_file.csv

найдите столбец 1 и замените его столбцом 2 из файла ввода.csv

 1234 onetofour
1002 ten2
2004 tennyfour
3214 threefouteen
0032 thirtytwo
6632 Sixtytwo
 

Используя записи Input_file.csv, я хочу заменить идентификаторы на имена внутри UsersID.txt

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

 Group1 = onetofour,ten2,tennyfour
group2 = threefouteen,thirtytwo,Sixtytwo
onetofour= Read
Sixtytwo = Write
 

Я предпочитаю сценарии оболочки здесь, любезно предложите то же самое.

Спасибо

Комментарии:

1. Поскольку это не бесплатная услуга кодирования, мы были бы признательны, если бы сначала попытались. Не публикуйте его в виде комментария, изображения, таблицы или ссылки на сторонний сервис, а используйте текст и включите его в свой исходный вопрос. Спасибо.

2. Привет, Джеймс, я уже пробовал это вручную в командной строке с помощью sed. было бы здорово, если бы вы могли предложить то же самое.

Ответ №1:

Я люблю баш, и у меня было немного свободного времени.

 bash-4.1$ cat UserID.txt
Group1 = 1234,1002,2004
group2 = 3214,0032,6632
1234 = Read
6632 = Write
bash-4.1$ data=$(cat Input_file.csv); awk '{print $1"/"$2}' <<<"$data" | xargs -I {} sed -i 's/{}/g' UserID.txt
bash-4.1$ cat UserID.txt
Group1 = onetofour,ten2,tennyfour
group2 = threefouteen,thirtytwo,Sixtytwo
onetofour = Read
Sixtytwo = Write
bash-4.1$
 

Комментарии:

1. Спасибо Тебе, ангшуман, я попробую это и обновлю 🙂

2. Я в состоянии достичь своей цели, чем много 🙂