2013-02-27 3 views
0

Я один скрипт, который работает и дает файл CSV в качестве вывода в приведенном ниже форматенеобходимо выровнять файл CSV в правильном формате

25-02-2013   
RJ   
D204349194   
Pagamento Caixa              0 
      256.31 -256.31  

Но мне нужно, чтобы выровнять в следующей форме:

25-02-2013 RJ D244728244 Pagamento Banco Brasil 0 403.25 -403.25 

Средства, как первенствует она должна быть разделена на столбцы

пожалуйста, предложите мне

+2

Какое магическое преобразование преобразует 256.31 в 403.25? –

ответ

1

если у вас есть column установлен, попробуйте следующую строку:

awk '{printf $0}' file|column -t 

для вашего примера:

kent$ cat file 
25-02-2013   
RJ   
D204349194   
Pagamento Caixa              0 
      256.31 -256.31 

kent$ awk '{printf $0}' file|column -t 
25-02-2013 RJ D204349194 Pagamento Caixa 0 256.31 -256.31 
+0

У вас должно быть конечное пробел в вашем входном файле. Или вы используете другой 'awk'. Кроме того, 'column' не работает, если вход не заканчивается в новой строке (на OS X). –

+0

@WilliamPursell хорошая точка! мой awk - gnu awk 4. Я проверил введенный вопрос, есть конечные пробелы. поэтому я придумал 'printf $ 0'. с '' '' безусловно безопаснее. – Kent

0

Первое использование tr тянуть все на одной линии, а затем использовать sed, чтобы разделить одну строку на основе поля , Попробуйте следующее:

tr '\n' '\t' < file | sed -r 's/([0-9]{2}-[0-9]{2}-[0-9]{4})/\n\1/g' 

Это предполагает, что:

  • вашего файл табуляция
  • первого полем каждой записи является датой формы dd-MM-yyyy
  • нет других даты в записи, за исключением первого поля
0
awk '{$1=$1; printf $0 " "}' input; echo 

$1=$1 сжимает пробелы на каждой строке, а echo испускает завершающую строку новой строки.