• ベストアンサー

MacでCSV出力 Catで読み込むと0行

Microsoft Excel for Mac 2011を利用しています。 Mac OSは10.10です。 CSV出力をして、Kシェルで処理をしたいのですが、うまくCSVファイルを読み込めないようです。 cat hoge.csv |wc -l をしてみると 0行になっています。 改行関連がおかしいのか、どうかわからない状態で、前にすすめません。 手打ちテキストを作成したシェルに読み込ませるとうまくいくのですが。。 どなたかご教授お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

まず、wcの結果から 0 2111 36081 UTF8_hoge.csv ということは 行数 0 単語数 2111 文字数 36061 です。wc -l は行数ですので、catからのパイプでの入力と、直接指定した場合とで一致しています。 ということは「Catで読み込むと」ではなく、もとから改行と見做されていない、ということです。 od -c の結果から、やはり、改行コードがCR (OS9以前のMac用)になっていることが原因のようです。 改行コードの変換には ・Mac OS X に付属のコマンドラインツールを使うなら、 tr , sed ,awk ,perl , python 等で変換スクリプトを書く ・nkf ,dos2unix等のツールをインストールして使う ・単純なので、変換ツールを自作する という方法があります。

bauzoux
質問者

お礼

丁寧に教えていただきましてありがとうございました。 ご説明いただき、理由がわかりました。 nkfを入れているので、nkfからしてたいと思います。 本当にありがとうございました。

その他の回答 (2)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

> od -c hoge.csvを打ってみましたが、標準出力の意味がわかりませんでした。 man od でマニュアルを読みましょう。(ネット検索でもいいですけど) od はバイナリをダンプするコマンド -c オプションを付けると「文字」と解釈できるところは、そのまま文字で出力されます。 CSVならテキストファイルなので、ファイルの内容がほぼそのまま出力され、改行の代りに、CR は \r LF は \n と出力されます。 > 改行コードはKシェル内部でファイル読み込む際に変更できるでしょうか? 本当に改行コードが原因なら、変換する方法はあります。 あと、wcは直接ファイルを指定すると、そのファイルの計測をします。 wc hoge.csv ではどうなるのでしょう?

bauzoux
質問者

お礼

回答再度いただきましてありがとうございます。 >CSVならテキストファイルなので、ファイルの内容がほぼそのまま出力され、改行の代りに、CR は \r LF は \n と出力されます。 出力結果の内容をよくみたら、/r になっていました。 改行コードが/nでないみたいです。 手打ちで試しに作成したテキストファイルをみると改行コードは/nになっているみたいです。 >wc hoge.csv >ではどうなるのでしょう? 以下の結果になっています。 0 2111 36081 UTF8_hoge.csv

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

> cat hoge.csv |wc -l をしてみると 0行になっています。 まず、 od -c hoge.csv で、改行コードを確認してください。 上記から連想されるのは、「改行コードがCR」 OSXの前の OS9以前だと、Macの改行コードはCRであり、今でも、一部アプリケーションは「Mac用改行コード」を選択して保存すると、CRを使います OSXはUNIXであり、改行コードはLFです。 lsh等を使って処理するなら、 改行コードはLFをLFを使っていることが必要となるでしょう。

bauzoux
質問者

お礼

回答ありがとうございます。 od -c hoge.csvを打ってみましたが、標準出力の意味がわかりませんでした。 改行コードはKシェル内部でファイル読み込む際に変更できるでしょうか?

関連するQ&A