Concatenando duas strings cortes string

1

Eu extraio duas strings numéricas de um arquivo de texto e quero combiná-las para criar uma nova string. A nova string será um nome de arquivo.

Este é o arquivo de texto dates.dat :

378464,2015-01-31
1019348,2015-03-31
1019342,2015-03-31
1019347,2015-03-31
1019349,2015-05-11

Meu script de shell:

while IFS=, read line
do
    IFS=',' read -r id date <<< "$line"
    filename="${date}-${id}.xml"
    echo $filename
done < "dates.dat"

Tudo o que vejo é 3784641-31 1019348-31 1019342-31 1019347-31 1019349-11 . Mas espero 2015-01-31-378464.xml etc.

    
por MERose 12.08.2015 / 13:24

1 resposta

2

Parece que você quer apenas substituir a vírgula na entrada por um traço, trocar os dois campos e adicionar .xml no final. Isso é feito facilmente usando awk :

$ awk -v FS=',' -v OFS='-' '{ print $2, $1 ".xml" }' dates
2015-01-31-378464.xml
2015-03-31-1019348.xml
2015-03-31-1019342.xml
2015-03-31-1019347.xml
2015-05-11-1019349.xml

Se o seu arquivo de entrada tiver finais de linha do DOS, envie a entrada através de tr first:

$ tr -d '\r' <dates | awk -v FS=',' -v OFS='-' '{ print $2, $1 ".xml" }'
    
por 04.09.2017 / 13:22

Tags