LINUX.ORG.RU

awk - объединение файлов csv с указанием имени файла

 ,


1

1

Добрый день уважаемые форумчане!! подскажите пожалуйста как можно реализовать объединение с помощью AWK объединение файлов cvs с указанием имени файлов (источников) на просторах интернета нашел команду

awk '(NR == 1) || (FNR > 1)' *.csv > /home/user/Downloads/test/all.csv 

которая работает хорошо только не записывает имя файла(. Нашел на просторах интернета что существует переменная FILENAME только я разобрался как ее применять

Пример:

1.csv

1;500;01.01.1980;Иванов;Иван;Иванович
2.csv

2;350;02.02.1985;Петров;Петр;Петрович

Хотелось бы получить объединений csv файл следующего вида:

1.csv;1;500;01.01.1980;Иванов;Иван;Иванович
2.csv;2;350;02.02.1985;Петров;Петр;Петрович


Последнее исправление: xaizek (всего исправлений: 7)

Ответ на: комментарий от Miguel

честного говоря я не силен в синтаксисе приложения я написал:

awk ‘(NR == 1) || (FNR > 1)’ *.csv > /home/user/Downloads/test2/all2.csv for (a in *.csv); do sed -e «s/^/$a;/» $a; done

в ответ получил:

bash: syntax error near unexpected token `(’

anton-diz
() автор топика
Ответ на: комментарий от slovazap

я уже пробывал по разному вставить переменную FILENAME:

awk ‘(NR == 1) || (FNR > 1)’ *.csv FILENAME $0 > /home/user/Downloads/test2/all.csv

awk ‘(NR == 1) || (FNR > 1)’ FILENAME $0 *.csv > /home/user/Downloads/test2/all.csv

awk FILENAME $0 ‘(NR == 1) || (FNR > 1)’ *.csv > /home/user/Downloads/test2/all.csv

вылетает ошибка

awk: fatal: cannot open file `bash’ for reading (No such file or directory)

anton-diz
() автор топика
Ответ на: комментарий от anton-diz

я уже пробывал по разному вставить переменную FILENAME

Зачем вы пробовали, а не написали прямо то что хотите?

awk '{print FILENAME";"$0}' *.csv

slovazap ★★★★★
()

Я тебе запятых принёс.
,,,,,,,,,,,,,,,,,,,,,,

ashot ★★★★
()
Ответ на: комментарий от Psilocybe

все сработало но почему то текст стал иероглифами

anton-diz
() автор топика

Возможно я не совсем понял задачу, но зачем здесь awk?

paste -d '\n' *.csv

Делает ровно то, что нарисовано в условии :)

P.S. Да, действительно не доглядел :) Ну тогда ответ уже выдали выше:

awk '{print FILENAME";"$0}' *.csv

Saivrem
()
Последнее исправление: Saivrem (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.