На этот вопрос уже есть ответ:
I имеют много файлов следующего формата (все они содержат заголовки и имеют одинаковое количество столбцов):
col1,col2,tt2,mm3
123,292810,1501223371-7504710,yes
1234,286130,1501223549-101722650,yes
334,276300,1501223650-71196600,yes
445,290100,1501224239-87923810,yes
Количество строк в каждом файле разное, но всегда небольшое (около 20-40 строк). Все файлы находятся в одном каталоге.
Я хочу объединить все эти несколько файлов в один без повторения заголовков. Как это сделать с помощью сценария bash?
Вы могли использовать awk
связать файлы, пропуская первую строку каждого файла, если это не первая строка всех файлов.
Например, если файлы называют part-00000
через part-00199
затем
awk 'FNR==1 && NR!=1 {next} {print}' part-{00000..00199}
Я захватил бы заголовки из одного из файлов и затем захватил бы все от строки 2 вперед от всех файлов.
head -1 part-00000 > output.csv
tail -n +2 part-* >> output.csv
Простая альтернатива другим решениям использует cat
и grep
как:
cat * | grep -v '^col1,col2' > newfile