実現したいこと
・シェルスクリプトでCSVファイルを1行ずつ読み込む
・各行のカラムを取り出して処理する
・処理結果を別のCSVファイルとして出力する
具体的な要件
・以下のようなCSVファイル(input.csv)を読み込む
1,hoge,hoge,unko
2,hoge,hoge,hoge
3,hoge,hoge,hoge
4,hoge,hoge,unko
5,hoge,hoge,hoge
6,hoge,hoge,hoge
7,hoge,hoge,unko
8,hoge,hoge,hoge
9,hoge,hoge,hoge
10,hoge,hoge,unko
・4カラム目が「unko」である行のみ取り出し、別ファイル(output.csv)に出力する
実装例
# !/bin/bash
INPUTFILE="/tmp/input.csv"
OUTPUTFILE="/tmp/output.csv"
# ファイルを読み込む
while read -r LINE
do
# 読み込み行の4カラム目の値を取り出す
FOURTHCOLUMN=$(echo "${LINE}" | cut -d ',' -f4)
# カラムの値が「unko」である場合、出力ファイルに書き込む
if [ "${FOURTHCOLUMN}" = "unko" ]; then
echo "${LINE}" >> "${OUTPUTFILE}"
fi
done < "${INPUTFILE}"
このスクリプトを実行すると以下の出力ファイルが得られます。
output.csv
1,hoge,hoge,unko
4,hoge,hoge,unko
7,hoge,hoge,unko
10,hoge,hoge,unko