GNU/Linux >> Znalost Linux >  >> Linux

nejrychlejší způsob převodu souboru odděleného tabulátory na csv v linuxu

Pokud vše, co musíte udělat, je přeložit všechny znaky tabulátoru na znaky čárky, tr je pravděpodobně správná cesta.

Prázdné místo zde je doslovný tabulátor:

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

Samozřejmě, pokud máte v souboru vložené tabulátory do řetězcových literálů, přeloží se tím také nesprávně; ale vložené doslovné karty by byly poměrně neobvyklé.


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

Perl je v tomto druhu obecně rychlejší než sed, awk a Python.


Pokud se obáváte vložených čárek, budete muset použít trochu inteligentnější metodu. Zde je skript Pythonu, který přebírá řádky TSV z stdin a zapisuje řádky CSV do 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)

Spusťte jej z prostředí shell následovně:

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

  • Pokud chcete převést celý soubor tsv na soubor csv:

    $ cat data.tsv | tr "\\t" "," > data.csv
    
  • Pokud chcete některá pole vynechat:

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

    Výše uvedený příkaz převede soubor data.tsv na soubor data.csv obsahující pouze první tři pole.


Linux
  1. Nainstalujte AzCopy na Linux – nejrychlejší způsob kopírování v Azure

  2. Nejúčinnější způsob kopírování souboru v Linuxu

  3. Nejrychlejší způsob, jak získat dostupnost systému v Pythonu v Linuxu

  1. Jak převést soubory do kódování UTF-8 v Linuxu

  2. Snadný způsob, jak skrýt soubory a adresáře v Linuxu

  3. Linux – všechno je soubor?

  1. csplit:Lepší způsob, jak rozdělit soubor v Linuxu na základě jeho obsahu

  2. Čtení souboru CSV s SQL dotazy z linuxového shellu

  3. Jak převedu obraz disku Linux na řídký soubor?