はじめに
CSVデータから目的のカラム値を確認するときどうやってますか?
エクセルのデータ区切りを使う方法が最も一般的かと思います。
が、1行だけであれば、テキストエディタで確認できるお手軽な方法があるので紹介します。
また、sedコマンドでもやってみました。ちょっと面倒ですが、シェル化するなどして使い道があるかもしれません。
1.テキストエディタでやってみる
下記のサンプルデータを使用してやってみます。
ID,名前,年齢,性別,給与,部署,役職,経験年数,学歴,住所,電話番号,メールアドレス,雇用日,パフォーマンススコア,福利厚生 1,アリス,28,女性,55000,営業,マネージャー,6,学士,東京都渋谷区1-2-3,03-1234-5678,alice@email.com,2020-03-15,優秀,健康保険、歯科保険 2,ボブ,35,男性,72000,エンジニアリング,ソフトウェアエンジニア,10,修士,東京都千代田区4-5-6,03-9876-5432,bob@email.com,2012-08-20,高評価,401(k)、有給休暇 3,チャーリー,22,男性,42000,マーケティング,コーディネーター,2,専門学士,神奈川県横浜市7-8-9,045-345-6789,charlie@email.com,2023-01-10,平均,有給休暇 4,ディアナ,31,女性,62000,人事,リクルーター,8,学士,東京都中央区10-11-12,03-2345-6789,diana@email.com,2015-05-02,高評価,フレックスタイム制度 5,エヴァ,24,女性,48000,財務,アナリスト,4,学士,神奈川県川崎市13-14-15,044-456-7890,eva@email.com,2019-11-18,平均,退職金制度
このサンプルデータはMicrosoftのAIであるCopilotさんに作ってもらいました。便利な時代です。
②カンマを改行コードに置換する
テキストエディタの置換機能から以下の条件を設定します。
置換前 ,
置換後 \r\n
「正規表現」チェックをオンにするのを忘れずに。
「すべて置換」をします。
\はエスケープ文字です。バックスラッシュか¥マークを使います。
③出来上がり
エディタ左端の行数がカラム位置を表します。
2.sedコマンドでやってみる
需要があるかわかりませんがsedコマンドを駆使しても可能です。
①目的の行を抜き出す
nオプションの後に行番号を指定すると目的の行を抽出できます。
指定行の後ろにpをつけるのを忘れずに。
例:3行目を抜き出す場合
sed -n 3p data.csv
$ sed -n 3p data.csv 2,ボブ,35,男性,72000,エンジニアリング,ソフトウェアエンジニア,10,修士,東京都千代田区4-5-6,03-9876-5432,bob@email.com,2012-08-20,高評価,401(k)、有給休暇 $
②カンマを改行コードに置換する
sコマンドでカンマを改行コードに置換します。
gは全置換オプションです。つけないと1個目のカンマしか置換されません。
sed -n 3p data.csv | sed s/,/\\n/g
\はエスケープ文字です。バックスラッシュか¥マークを使います。
$ sed -n 3p data.csv | sed s/,/\\n/g 2 ボブ 35 男性 72000 エンジニアリング ソフトウェアエンジニア 10 修士 東京都千代田区4-5-6 03-9876-5432 bob@email.com 2012-08-20 高評価 401(k)、有給休暇 $
③行番号を追加する
=コマンドで行番号を追加します。
sed -n 3p data.csv | sed s/,/\\n/g | sed =
$ sed -n 3p data.csv | sed s/,/\\n/g | sed = 1 2 2 ボブ 3 35 4 男性 5 72000 6 エンジニアリング 7 ソフトウェアエンジニア 8 10 9 修士 10 東京都千代田区4-5-6 11 03-9876-5432 12 bob@email.com 13 2012-08-20 14 高評価 15 401(k)、有給休暇 $
④行番号の位置を直す
行番号とカラムが改行されているのでくっつけて同一行にします。
Nは次の行も読み込んでパターンマッチングの対象とするコマンドです。
sed -n 3p data.csv | sed s/,/\\n/g | sed = | sed 'N;s/\n/ /'
$ sed -n 3p data.csv | sed s/,/\\n/g | sed = | sed 'N;s/\n/ /' 1 2 2 ボブ 3 35 4 男性 5 72000 6 エンジニアリング 7 ソフトウェアエンジニア 8 10 9 修士 10 東京都千代田区4-5-6 11 03-9876-5432 12 bob@email.com 13 2012-08-20 14 高評価 15 401(k)、有給休暇 $
できました!
以上です。