まだ中学生のブログ

スマホ関連、Google関連のことを書いてます。IT系勤務、既婚、精神年齢:中学生。

sedの末尾に任意の文字を追加しようとしたら意図しない改行が入る

sedの末尾に任意の文字を追加しようとしたら意図しない改行が入る

目次

  • 概要

  • sedの末尾に任意の文字を追加しようとしたら意図しない改行が入る

    • 環境

    • 事象

    • 原因

    • 解決策

概要

sedの末尾に任意の文字を追加しようとしたら意図しない改行が入る

環境

  • Windows 7
  • Virtual Box Ubuntu 14.04.02
  • UbuntuからWidowsのフォルダを共有

下記のコマンドでホストであるWindowsのディレクトリをゲストのUbuntuでマウントしていました。

sudo mount -t vboxsf {フォルダ名} {マウント先}

事象

この状態でcsvファイルのカラムを増やすため、末尾に「,」を付け加えることにしました。

1,hogehoge
2.fugafuga

のようなcsvファイルに対し

find . -name "*.csv" -print0 | xargs -0 -Ifile sed  's/$/,/g' -i file

を実行したところ、

1,hogehoge
,
2.fugafuga
,

となってしまいました。

原因

改行コードがCRLFであることでした。

解決策

nkf -Lu --overwrite *.csv

で改行コードをLFへ変換。 先ほどのsedでうまくいきました。


以上