2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MacでExcelのシートをcsv(UTF-8形式)で保存して、awk,joinコマンドとかする際の留意点

Last updated at Posted at 2019-03-05

Intro

MacのExcelでcsv形式で保存したファイルに対してawkやjoinで良きに図ろうとするとぐちゃぐちゃな表示になった経験はありませんか?
ニッチすぎて需要があるかものすごく疑問ですが、MacのOffice 365の2019/03/05時点最新版Excelでシートをcsv(UTF-8)形式で保存した場合に、そのファイルに対してawk,joinコマンドを使いたいあなた(?)に向けて留意点を書きます。

留意点

MacのExcelでcsvを保存すると、

  • 文字コードはUTF-8ですが、BOM(バイトオーダーマーク)が付きます
  • 改行コードがLFではなく、CRLFになってCRが余計に付きます

改行コードCRLFがMacだとキッツイ。
Windowsじゃないのです。

検証

Excelで
1 2
2 3
3 4
4 5
5 5
をcsv形式でsheet1.csvという名前で保存。

$ cat sheet1.csv
1,2
2,3
3,4
4,5
5,5

一見何の変哲も無い。

$ awk '{print $1,$2}' sheet1.csv
1 2
2 3
3 4
4 5
5 5

これは大丈夫。

$ awk '{print $2,$1}' sheet1.csv
 1
 2
 3
 4
5 5

これがNGです。

まず先に怪しそうなCRLFをLFに変換して再度awk

$ nkf --overwrite -Lu sheet1.csv
$ awk '{print $2,$1}' sheet1.csv
2 1
3 2
4 3
5 4
5 5

OKです。

CRLFが余計であって、BOMは関係なさそうですね。

対処

BOMも気になる方は、BOMなしUTF-8かつ改行コードをLFにして上書き保存しちゃいましょうか。

$ nkf -w -Lu --overwrite [csvファイル名]

この記事にたどり着いた人でnkfコマンドを知らない人はいない気がするので、この解説とインストールは省きます。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?