Diberikan file seperti itu
First,Last,Age
Cory,Klein,27
John Jacob,Smith,30
Apakah ada utilitas baris perintah untuk memindahkan konten sehingga output muncul seperti itu
First,Cory,John Jacob
Last,Klein,Smith
Age,27,30
text-processing
csv
Cory Klein
sumber
sumber
python
, b)ruby
tidak kalah portabel daripadapython
, dan c) ini juga menunjukkan cara untuk melewatkan input / output file. Bravo @luikore, dan selamat datang di Unix & Linux. Silakan tinggal.Penguraian CSV tidak mudah dilakukan dengan alat POSIX saja, kecuali jika Anda menggunakan varian CSV yang disederhanakan tanpa kutip (sehingga koma tidak dapat muncul di bidang). Meski begitu tugas ini tampaknya tidak mudah dilakukan dengan awk atau pemrosesan teks lainnya menjadi alat. Anda dapat menggunakan Perl dengan
Text::CSV
, Python dengancsv
, R denganread.csv
, Ruby dengan CSV , ... (Semua ini adalah bagian dari perpustakaan standar bahasa masing-masing kecuali untuk Perl.)Misalnya, dalam Python:
sumber
Dari /programming//a/2776078 :
Dan kemudian bertobat
Atau dalam pipa
sumber
... | csvtranspose | ...
akan mengalahkan itu, sintaksis.Solusi bash yang cepat & kotor :
sumber
for ((i=1; i<=$num_cols; ++i)); do paste -s -d, <(cut -f$i -d, file.txt); done
this "is" example
sel dikodekan"this ""is"" example"
Saya tidak yakin jika solusi ini menangani kasus-kasus seperti itu dengan benarDengan batasan yang disarankan (tanpa kutip, tidak ada koma yang disematkan), ini sederhana dalam awk (karena akan dalam perl tidak memperhitungkan lebih dari seribu baris
CSV.pm
, 2300 baris dalamcsv.rb
- python hanya memiliki 450 bariscsv.py
).Ini adalah contoh untuk awk:
By the way: contoh yang diberikan memiliki ruang ekstra yang diasumsikan OP akan dihapus; contoh lain tidak membahas detail ini.
sumber