Mengekstrak * .csv dari seratus ritsleting dan menambahkan hasil

0

Apa cara yang efisien untuk mengekstraksi hanya semua file * .csv (bukan file lain di dalamnya) dari dalam seratus file zip dalam satu direktori? Maka saya perlu membuat satu file besar dengan masing-masing file CVS ditambahkan bersama-sama meskipun menghapus baris header 1 dari file 2, ..., n.

Jika berfungsi dengan baik, saya ingin menggunakan 7za.exe 7-Zip versi baris perintah atau solusi lain yang lengkap dan tidak memerlukan instalasi pada platform WinXP. Ritsleting berisi data lain yang tidak saya butuhkan.

Menambahkan sederhana mudah dengan file1 + file2 + ..., tetapi bagaimana dengan menjatuhkan header?

ExcelCyclist
sumber

Jawaban:

2

Sebenarnya, untuk melewati header di Unix / Linux, Anda memerlukan perintah 'tail'.

Anda dapat memberi tahu perintah 'tail' untuk melewati baris pertama (header) dengan melakukan hal berikut:

tail -n+2 filename

Ini akan memberi tahu ekor untuk mulai membaca dari baris 2.

Untuk melakukan ini semua File .csv di direktori Anda saat ini, dan menambahkannya bersama-sama, letakkan yang berikut ini dalam sebuah skrip:

#!/bin/bash

for file in *.csv
do
tail -n+2 $file
done

Anda kemudian dapat menjalankan skrip ini seperti ./script.sh> keluaran dan output akan berada dalam file bernama 'output'.

Sayangnya saya tidak tahu apakah sesuatu seperti tail tersedia dalam kapasitas apa pun pada Windows tanpa port.

Bergman
sumber
terima kasih bash dan program buntut memudahkan pada beberapa platform.
ExcelCyclist
1

Untuk mempermalukan saya jawaban tentang mengekstraksi hanya tipe file tertentu dari dalam semua file terkompresi dalam direktori dengan 7Zip adalah sederhana:

7za.exe e *.zip *.csv

Kemudian untuk menggabungkan file dengan file batch (meskipun mengecewakan, baris tunggal ini tidak dapat diketikkan ke command prompt)

[saved as foo.bat for example]
for %%X in (*.csv) do tail -n+2 %%X >> combined.csv
ExcelCyclist
sumber
0

tapi bagaimana dengan menjatuhkan header?

Dengan perintah 'head' unix (dari mingw, opench, atau banyak utilitas lainnya) Anda dapat menggunakan "head -n" untuk menampilkan semua kecuali baris 'n' pertama

Martin Beckett
sumber
terima kasih, apakah itu tersedia di windows tanpa port cygwin yang berantakan?
ExcelCyclist
Anda bisa mendapatkannya dari unxutils.sf.net (antara lain)
TML