TSVファイルをシェルで配列に読み込む
whle read line
do
row=(`echo ${line}`)
echo ${row[0]}" "${row[1]}"値の処理 ..."
done < "filename"
echo ${line}
を``で囲むのがミソ
TSVでも空白でも、あーら不思議。csvreader みたいになる。
(ただし、IDファイルとか、空白や日本語がないものに限る、シェルで扱うの他のコマンドに渡せる引数の値としてとかを想定)
さらにディレクトリ配下のファイルをすべて1行ずつ読みだして、CSVとして処理するとこうなる
for filename in `ls ./*.tsv`
do
whle read line
do
row=(`echo ${line}`)
echo ${row[0]}" "${row[1]}" 値の処理..."
done < ${filename}
done
ls *.tsv
でtsvを拡張子に持つファイルが列挙された結果、ファイル名が自動的に配列となって$filenameにとりだされている
ls の変わりに find でもっと条件をしていしてもよいです。
たとえば、データベースから出したTSVがあるディレクトリにたくさんあって、そのIDでだけをとりだしてモニョモニョとか、おもむろに1回だけしたい作業とかによく使うのでメモ。