GNU/Linux >> Belajar Linux >  >> Linux

cara tercepat mengonversi file yang dibatasi tab ke csv di linux

Jika Anda hanya perlu menerjemahkan semua karakter tab menjadi karakter koma, tr mungkin adalah cara yang tepat.

Ruang kosong di sini adalah tab literal:

$ echo "hello   world" | tr "\\t" ","
hello,world

Tentu saja, jika Anda telah menyematkan tab di dalam string literal dalam file, ini juga akan salah menerjemahkannya; tetapi tab literal tersemat tidak umum.


perl -lpe 's/"/""/g; s/^|$/"/g; s/\t/","/g' < input.tab > output.csv

Perl umumnya lebih cepat dalam hal semacam ini daripada sed, awk, dan Python.


Jika Anda khawatir tentang koma yang disematkan, Anda harus menggunakan metode yang sedikit lebih cerdas. Berikut skrip Python yang mengambil baris TSV dari stdin dan menulis baris CSV ke stdout:

import sys
import csv

tabin = csv.reader(sys.stdin, dialect=csv.excel_tab)
commaout = csv.writer(sys.stdout, dialect=csv.excel)
for row in tabin:
  commaout.writerow(row)

Jalankan dari shell sebagai berikut:

python script.py < input.tsv > output.csv

  • Jika Anda ingin mengonversi seluruh file tsv menjadi file csv:

    $ cat data.tsv | tr "\\t" "," > data.csv
    
  • Jika Anda ingin menghilangkan beberapa kolom:

    $ cat data.tsv | cut -f1,2,3 | tr "\\t" "," > data.csv
    

    Perintah di atas akan mengonversi file data.tsv menjadi file data.csv yang hanya berisi tiga yang pertama bidang.


Linux
  1. Cara Mengonversi File ke Encoding UTF-8 di Linux

  2. 4 langkah untuk membuat pengguna Linux dari file csv dengan Ansible

  3. Linux – Semuanya Adalah File?

  1. Cara Mudah Menyembunyikan File dan Direktori di Linux

  2. csplit:Cara yang Lebih Baik untuk Membagi File di Linux Berdasarkan Kontennya

  3. Cara paling efisien untuk menyalin file di Linux

  1. Instal AzCopy di Linux – Cara tercepat untuk menyalin di Azure

  2. Cara tercepat untuk mendapatkan waktu aktif sistem dengan Python di Linux

  3. Bagaimana cara mengonversi image disk Linux menjadi file jarang?