2016-10-17 5 views
-1

У меня есть 900 текстовых файлов в моей папке «SUBJ1» в следующем форматеShell - Bash скрипт для экспорта данных из нескольких текстовых файлов с прекрасным именем в качестве заголовка в CSV

file name 1.txt 
file name 2.txt 
...... 
file name 900.txt 

Каждый файл состоит из данных, расположенных в 4 строки и 2 колонки

667869 667869 
580083 580083 
316133 316133 
9291.5 9291.5 

я хотел бы экспортировать данные в текстовый файл в формате CSV в таблицу в следующем формате: выходной файл CSV должен быть в этом формате

Sample Output

+1

Я хотел бы попробовать 'вставить -d«;» * .txt' – mouviciel

+0

все текстовые файлы имеют в них данные, я хочу переместить данные в каждом файле на csv, как я могу это сделать – DevanDevak

+1

Что такое строка Subj1? Пожалуйста, покажите результат в случае не менее 3-х файлов, с более подробной информацией. – blackpen

ответ

2

Я думаю, что следующее это сделало бы. Необходимый инструмент paste, но следующее также выводит строку заголовка имени файла.

{ for f in *.txt; do 
    /bin/echo -n -e "$f\t" 
done 
echo 
paste *.txt 
} > output.csv 

Предполагается, что в каталоге нет файлов, заканчивающихся на .txt, чем исходные файлы.

Если вы хотите, другой разделитель, скажем ;, замените \t на линии 2, ; и заменить последнюю строку на

paste -d ';' *.txt 
+0

. Как мне экспортировать все данные в файл csv? – DevanDevak

+0

Что делать, если у меня есть 10 папок в каталоге с именами subj1, subj2, subj3..subj10, и каждая папка содержит 190 таких текстовых файлов с одинаковыми соглашениями об именах, как я могу иметь один файл csv для каждой папки subj? – DevanDevak

+0

Возможно, проще всего просто вставить компакт-диск в каждую папку отдельно и запустить скрипт в каждом? Конечно, это тоже возможно для сценариев. Не могли бы вы опубликовать это как отдельный вопрос и пометить это как ответ (и ответ для ответа, пожалуйста). – loxo