У меня есть данные из таблицы Inte rnet в текстовом файле. Мне нужно преобразовать этот файл в стандарт .csv (через запятую и т. Д. c.) И очистить его. Например:
Data Fechamento Variação Variação (%) Abertura Máxima Mínima Volume
30 Abr 2020 2,00 0,76 61,29% 1,99 2,10 1,80 152.100
29 Abr 2020 1,24 -0,44 -26,19% 1,28 1,71 1,20 125.700
Мой код:
echo -e "File: \c"
read nome_arq
arq=$(<$nome_arq)
arq=$(echo $arq | sed 's/%//g')
arq=$(echo $arq | sed 's/()//g')
arq=$(echo $arq | sed 's/\.//g')
arq=$(echo $arq | sed 's/\+//g')
arq=$(echo $arq | sed 's/ Abr /_04_/g')
arq=$(echo $arq | sed 's/ Mar /\_03_/g')
arq=$(echo $arq | sed 's/\,/\./g')
arq=$(echo $arq | sed 's/\ /\,/g')
append="_clean"
echo -e $arq >> $nome_arq$append
Однако в выходных данных нет разрывов строк, выходной файл содержит только одну строку:
Data,Fechamento,Variação,Variação,Abertura,Máxima,Mínima,Volume,30_04_2020,2.00,0.76,61.29,1.99,2.10,1.80,152100,29_04_2020,1.24,-0.44,-26.19,1.28,1.71,1.20,125700,
Что я могу сделать, чтобы сохранить исходные разрывы строк в моем выводе?
Редактировать 5 мая:
Я получаю свой результат с помощью следующего кода:
append="_clean"
cat $nome_arq|while read z;do echo "$z"|sed "s/\s\+/\"xxxx\"/g; s/^/\"/g; s/$/\"/g";done >> $nome_arq$append
sed 's/%//g' $nome_arq$append > output
rm $nome_arq$append
sed 's/()//g' output > output1
rm output
sed 's/\.//g' output1 > output2
rm output1
sed 's/\+//g' output2 > output3
rm output2
sed 's/\"//g' output3 > output4
rm output3
sed 's/xxxxMaixxxx/_05_/g' output4 > output5
rm output4
sed 's/xxxxAbrxxxx/\_04_/g' output5 > output6
rm output5
sed 's/xxxxMarxxxx/\_03_/g' output6 > output7
rm output6
sed 's/,/\./g' output7 > output8
rm output7
sed 's/xxxx/,/g' output8 > output9
rm output8
Очевидно, что это далеко не так. Я не мог использовать команду "tr", например. Как я могу сделать свой сценарий проще?