ファイルをタブ区切りテキストとスプレッドシートとして保存する

ファイルをタブ区切りテキストとスプレッドシートとして保存する

Linux で次のコマンド ラインを使用して、入力ファイル (列で構成された txt ファイル) の内容をスプレッドシートとして保存しています。

less input_file > out_put.csv

私の出力ファイルは ここに画像の説明を入力してください

問題は出力スプレッドシートにあります。入力ファイル内のすべての列が、出力ファイル (スプレッドシート CSV) の 1 つの列にまとめられています。

txt ファイルをタブ区切りテキストとスプレッドシートとしてより効率的に保存できるように、単純なコードを修正するにはどうすればよいですか。

答え1

まず、lessは単なるページャーで、ファイルを読み取るためのツールです。 実行していることは、input_file を out_put.csv ( cp input_file out_put.csv) にコピーすることとまったく同じです。 コンテンツはまったく変更されません。

したがって、たとえば を使用してこれをスプレッドシートとして読み取るには、スプレッドシート アプリケーションを開き、 を開いて、スペースを列区切りとして使用するlibreoffice必要があります。input_file

        区切り文字としてスペースを選択した libreoffice テキストインポートダイアログ

さて、本当にファイルを変換したい場合はコンマ区切り値形式 ( .csv) を使用する場合は、カンマを追加する必要があります。このコマンドは、各行のすべてのスペースをカンマに置き換え、出力を次のように保存しますoutput.csv

sed 's/  */,/g' input_file > output.csv

上記のコマンドはsed、ここではその置換演算子一般的な形式は で、は にs/pattern/replacement/置き換えられます。末尾の により、 は に置き換えられます。patternreplacementg全て各行にパターンが出現します。これがないと、最初のものだけが置き換えられます。私が指定したパターンは、(スペース) の後に 0 個以上の*スペース ( *) が続くもので、 で置き換えるように指示しました,。これは基本的に、「1 つ以上のスペースの出現をコンマで置き換える」ことを意味します。

関連情報