Управляйте текстовыми файлами с помощью скрипта bash - PullRequest
0 голосов
/ 02 апреля 2020

Создайте сценарий ex2, который с помощью файла ./it/colaboradores/users.txt создаст файл «XXX» для каждого сотрудника в папке ./it/colaboradores/LDAP/ с исходным значением «XXX». Внутри каждого файла он должен содержать следующий текст:

Пример первой строки:

$ cat TES
Nome: TesteTeste
Email: teste.teste@xxx.pt
Numero de telemovel: 934318232
Skype: teste.cvs

Пока это мой код:

#!/bin/bash

input="$HOME/folha1/it/colaboradores/users.txt"
out="$HOME/folha1/it/colaboradores/LDAP/teste.txt"

while read line; do

        Acr="$(awk -F ';' '{print $1}' <<<"$line")"
        Nome="$(awk -F ';' '{print $2}' <<<"$line")"
        Email="$(awk -F ';' '{print $3}' <<<"$line")"
        Numero="$(awk -F ';' '{print $4}' <<<"$line")"
        Skype="$(awk -F ';' '{print $5}' <<<"$line")"

        cat  <<-!>> "$out"

       -------------------------------------------

        Acr: $Acr
        Nome: $Nome
        Email: $Email
        Numero: $Nr
        Skype: $Skype
        !

done < $input

В моем коде я тестирую если я могу манипулировать, и мои выходные данные для этого кода:

-------------------------------------------

#Acr: TES
Nome: TesteTeste
Email: teste.teste@xxx.pt
Numero de telemovel: 934318232
Skype: teste.cvs

       -------------------------------------------

#Acr: XXX
Nome: PauloTeste
Email: paulo.teste@teste.pt
NR: 323322323
Skype: paulo.teste

       -------------------------------------------

И мне трудно создать один файл для каждого человека .. и когда я запускаю свой скрипт, я помещаю пример:

./ex02 
cat TES 

вывод:

Nome: TesteTeste
Email: teste.teste@xxx.pt
Numero de telemovel: 934318232
Skype: teste.cvs

но в одном файле с именем файла находятся первые 3 letter.txt. (e TES.txt / XXA.txt)

я знаю, что это, может быть, немного за ... но я действительно не знаю, как действовать.

мой оригинальный текст это что-то вроде этого:

XXA;Teste;Teste.silva@Teste.pt;32323232;Teste.cs
XXB;Example;tes.te@Teste.pt;323232323;Teste.alx
XXC;Example;teste.te@Teste.pt;2323232;Teste.me2
XXD;ExamplesXamples;Joao.teste@Teste.pt;3232323;Teste
XXE;ExamplesXam;Pedro.teste@Teste.pt;32323232;Teste.rodrigues

что я хочу сделать со сценарием - создать файл для каждого человека, подобный этому

file tes.txt

#Acr: TES
Nome: TesteTeste
Email: teste.teste@xxx.pt
Numero de telemovel: 934318232
Skype: teste.cvs



file xxx.txt 

#Acr: XXX
Nome: PauloTeste
Email: paulo.teste@teste.pt
NR: 323322323
Skype: paulo.teste

1 Ответ

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

Попробуйте:

input="$HOME/folha1/it/colaboradores/users.txt"
out="$HOME/folha1/it/colaboradores/LDAP/"

while IFS=';' read -r Act Nome Email Numero Skype; do
     cat  << EOF >> "$out"/"$Nome".txt
Acr: $Acr
Nome: $Nome
Email: $Email
Numero: $Numero
Skype: $Skype
EOF
done < "$input"
...