2013-12-16 2 views
2

Я разбираю CSV-файл и хочу записать первый токен (который является меткой времени в форме YYYY-MM-DD HH:MM:SS.sss) в выходной файл. Я использую следующий код:Анализ файла с новым файлом

#!/bin/bash 
input="inputfile.csv" 

while 
    IFS=',' read -r f1 f2 f3 f4 f5 f6 f7 
do 
    echo "$f1" > $outfile.txt 
done < "$input" 

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

ответ

3

Следующая строка перезаписывает выходной файл в цикле.

echo "$f1" > $outfile.txt 

Используйте >> вместо (добавить вместо overwite):

echo "$f1" >> $outfile.txt 

Альтернатива использованием awk:

awk -F, '{print $1}' inputfile.csv > outfile.txt 
+0

Понял работает! Спасибо, забыл о '>>' присваивании. –

+1

@DustinCook, вы определили 'outfile'? Определите это. И, если возможно, укажите его: 'echo '$ f1" >> "$ outfile.txt" ' – falsetru

+0

@DustinCook, я добавил альтернативу, использующую' awk'. Проверьте это. – falsetru

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