2014-01-04 2 views
0

Возможно ли отформатировать csv из сценария оболочки, чтобы все столбцы были установлены так, чтобы они соответствовали?Shell Script для установки ширины столбца CSV для установки?

Вот что у меня есть, просто не знаю, что еще изменить:

#! /bin/bash 

saveDir="TJ" 
dd=$(date -v -1d '+%Y-%m-%d') 
for file in *.csv ; do 
    saveName="${saveDir}/TJ - ${dd}.csv" 
    cut -d',' -f2,14 "$file" > "$saveName" 
done 

Кроме того, после срезки колонн и оставив только 2-й и 14-й столбец У меня есть 3 дополнительные пустые столбцы .. как я избавиться от них?

Пример файл: http://d.pr/3a5Z

Это, как я хотел бы, CSV быть, отображая весь текст из обоего колонок и отрезания дополнительных столбцов из: http://d.pr/S1mz

EDIT:

#! /bin/bash 

saveDir="TJ" 
dd=$(date -v -1d '+%Y-%m-%d') 
for file in *.csv ; do 
    saveName="${saveDir}/TJ - ${dd}.csv" 
    awk '{x="";for(i=2;i<=14;i++){if(length(x))x=x",";x=x$i;}print x;}' yourfile 
done 
+0

Да это; Пожалуйста, разместите текущий вывод и ожидаемый результат –

+0

@FredrikPihl http://d.pr/3a5Z - это то, что вы имеете в виду? –

+0

Я хочу обновить свой вопрос с помощью одной строки вывода, которую вы сейчас получаете, а затем как вы хотели бы ее использовать. –

ответ

1

Одним из решений является использование sed для удаления трех запятых запятых

Вход:

$ cat TJ\ -\ 2014-01-03.csv 
name,number,,, 
test,1.00000,,, 
... 

выход:

$ sed 's/,,,//' TJ\ -\ 2014-01-03.csv 
name,number 
test,1.00000 
test,2.00000 
test,3.00000 
... 
+0

строки, начинающиеся с строки 2 и ниже, будут динамическими .. есть ли способ сделать это, не зная, какие данные находятся в строке 2 и ниже? –

1

Макроскопически EDITED

Попробуйте это:

#!/bin/bash 
saveDir="TJ" 
dd=$(date -v -1d '+%Y-%m-%d') 
for file in *.csv ; do 
    saveName="${saveDir}/TJ - ${dd}.csv" 
    awk '{x="";for(i=2;i<=14;i++){if(length(x))x=x",";x=x$i;}print x;}' $file > "$saveName" 
done 
+0

Я отредактировал главный пост с вашим предложением .. У меня ошибка «Ошибка скрипта», поэтому я не уверен, что пошло не так, поскольку я заменил команду cut на то, что вы предложили –

+0

Я также попробовал ваше альтернативное предложение, добавив его под моя команда отрезала и до сих пор не повезло –

Смежные вопросы