web-dev-qa-db-ja.com

LibreOffice Calcを使用して、フォーマットされたcsvファイルから生のcsvとして貼り付けをコピーする方法は?

生のcsvファイルが与えられた場合:

$ cat foo.csv 
foo, bar
buzz, "quoted string"

Libre office calc text import with separator and text delimiter set

これらの設定でLibreOfficeでこれを開くと、見栄えがします。しかし、ドキュメント全体をもう一度選択してコピーすると、クリップボードには次のものが含まれます。

foo  bar
buzz    quoted string

クリップボードが生のcsvを再び復元することを期待していました。


この例は非常に工夫されていますが、背景には、sedを介してチェリーピックしたり、を使用したりせずに、より大きなcsvからサブフラクションのみをエクスポートしたいというものがあります。

head -n 1 > example.csv
cat large.csv | grep SOME_CODE >> example.csv // sometimes the filter is not as easy

LibreOffice Calcは、Data > Autofilterを介して素敵なフィルター機能を提供し、使用したい行を簡単に見つけられるので、私はLibreOfficeCalcを使用するのが好きです。しかし、その選択を抽出することはそれほど簡単ではありません。

単体テストの設定には小さいファイルを使用します。そのため、適切なcsvパーサーがあれば、ほとんど違いがない場合でも、csvファイルの形式を変更したくありません。

単体テストのポイントは、実際の形式を適切に解析することを確認することであり、LibreOfficeによるCSVファイルの理解に対してテストしたくありません。

LibreOffice CalcでCSVファイルからコピーするときに生のフォーマットを維持するにはどうすればよいですか?

1
k0pernikus

Autofilterの代わりに、Data-> More Filters-> Standard Filterを使用して、結果をSheet2にコピーします。

standard filter

次に、Sheet2から、File-> Save AsにタイプText CSVで移動して、次のファイルを作成します。

foo,bar

これは、元のフォーマットとは少し異なります。まったく同じにする必要がある場合、LOCalcは適切なツールではありません。 sedなどを使用します。

1
Jim K