GNU/Linux >> Linux の 問題 >  >> Linux

Linuxでタブ区切りファイルをcsvに変換する最速の方法

翻訳するだけなら すべてのタブ文字からコンマ文字、tr

ここの空白は文字どおりのタブです:

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

もちろん、ファイル内の文字列リテラル内にタブを埋め込んでいる場合は、それらも正しく変換されません。しかし、埋め込まれたリテラル タブはかなり一般的ではありません。


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

Perl は一般に、sed、awk、Python よりもこの種の処理が高速です。


カンマの埋め込みが心配な場合は、もう少し賢い方法を使用する必要があります。以下は、標準入力から TSV 行を取得し、CSV 行を標準出力に書き込む Python スクリプトです:

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)

次のようにシェルから実行します:

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

  • tsv ファイル全体を csv ファイルに変換する場合:

    $ cat data.tsv | tr "\\t" "," > data.csv
    
  • 一部のフィールドを省略したい場合:

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

    上記のコマンドは、data.tsv ファイルを data.csv ファイルに変換します最初の 3 つだけを含む フィールド。


Linux
  1. Ansibleを使用してcsvファイルからLinuxユーザーを作成する4つのステップ

  2. Linux –すべてがファイルですか?

  3. csplit:コンテンツに基づいてLinuxでファイルを分割するためのより良い方法

  1. Linux に AzCopy をインストールする – Azure でコピーする最速の方法

  2. LinuxシェルからのSQLクエリを含むCSVファイルの読み取り

  3. Linux ディスク イメージをスパース ファイルに変換するにはどうすればよいですか?

  1. LinuxでファイルをUTF-8エンコーディングに変換する方法

  2. Linuxでファイルとディレクトリを隠す簡単な方法

  3. Linux でファイルをコピーする最も効率的な方法