CSV加工はどこまでbashでできるのか

テキスト処理

CSVを加工したい、列を足したい、簡単な計算をしたい。
こういう場面で、ついPythonやExcelを開きたくなりますが、bashだけで済むケースもかなり多いです。

bash道では「最初から重い道具を持ち出さない」ことを大切にします。
この記事では、CSV加工でbashがどこまで使えるのかを整理します。

bashでCSV加工をするメリット

bashでやるメリットは派手さではなく、軽さです。

  • 環境構築がいらない
  • SSH先でもすぐ使える
  • 作業ログとして残しやすい
  • ワンライナーで再現できる

特に「一回きりの加工」や「確認用の加工」ではbashが最強です。

基本はawk

CSV加工の主役はawkです。
awkは「行を読む → 列を扱う → 計算する」が自然に書けます。

例: data.csv

x
12
18
30

xを6.1で割った値を右に追加する場合。

awk 'BEGIN{OFS=","} NR==1{print $0,"y"; next} {print $1, $1/6.1}' data.csv

出力

x,y
12,1.96721
18,2.95082
30,4.91803

OFSで区切り文字を指定できるのがポイントです。

列を増やす

既存のCSVに計算列を足すのはawkが得意です。

例:

x,y
10,2
20,4

x/y を z として追加する。

awk 'BEGIN{OFS=","} NR==1{print $0,"z"; next} {print $0, $1/$2}' data.csv

bash的には「元の行をそのまま出して、最後に足す」という考え方をします。

条件分岐もできる

if文での判定もawkで完結します。

例: yが1ならxをzに、それ以外はyをzにする。

awk 'BEGIN{OFS=","} NR==1{print $0,"z"; next} {if($2==1){z=$1}else{z=$2}; print $0, z}' data.csv

小さな条件分岐なら、Pythonを書くより読みやすいことも多いです。

bashでやらないほうがいい境界

何でもbashでやればいい、というわけではありません。

bashをやめる目安

  • CSVの構造が頻繁に変わる
  • 文字コードや引用符が複雑
  • 数千行ではなく数十万行を超える
  • 処理をサービスとして再利用したい

このあたりからはPythonや専用ツールに任せたほうが安全です。

bash道的な使い分け

bash道ではこう考えます。

  • まずbashで試す
  • bashで見えるならbashで終わらせる
  • 無理を感じたら、迷わず他の言語へ行く

bashは「最終解」ではなく「最速の一歩」です。

おわりに

CSV加工はbashでも十分戦えます。
awkを一本覚えるだけで、日常のデータ処理はかなり楽になります。

「Pythonを書く前にawkを疑う」
これを合言葉に、bash道を進んでいきましょう。

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする