【Bash】テキストデータのスペース(空白)が消えてしまうのはechoコマンドが原因かもしれない。【Linux】

スポンサーリンク




なぜかわからず少し時間を食ってしまったので共有メモ。

いつも「a composer」(@a_composer_info)をお読みいただきありがとうございます。

banba(@banba929)です。

Linuxなどのシェルスクリプト(Bash)はCSVなどを一括編集するのにはかなり適しており、よく使います。

別の言語を使うとかなりの行数を書かないといけないような処理がコマンド1つで行えたり、便利なことこの上ないです。まあ、書き方に気をつけないとものすごく遅くなったりもするのですが…

そんな感じでCSV編集を行っていたのですが、実行後CSVを確認するとスペース(空白)が消えてしまう事象が起こりました。

原因はechoコマンドでした。同じような事象に悩まされている方の解決に繋がればなあと解決策を書いておきます。

echoコマンドはスペースを削除する

よく使っていた処理が、

echo ${変数名}  >>  text.csv

のようにリダイレクトを使用してテキストファイルに追記していく方法。

これだとスペースが消えてしまいます。

echoコマンドはなぜか空白を詰めてしまうのですね。

解決策は””(ダブルクォーテーション)をつけること。

これだけで空白もそのまま表示されます。

簡単なことなのですが…無駄に時間を使いました。

まとめ

Linuxを使っているとたまに「なんでだよー」と言いたくなることがあります。(純粋に僕が理解しきれていないだけですが)

ただコマンドやシェルスクリプトなどはかなり優秀で、様々なことが簡単にできるなあと感動しています。

こういった知識を蓄え、無駄に時間を使うのをどんどんやめて行きたいところです。

スポンサーリンク