shellでtsvをiterateする
タブ区切りでいくつかの要素のあるファイルを一行ずつ読み込み、カラムごとに別々の役割を持たせて処理をしたい。shellでの配列を使うとうまくいく。具体的にはsample.txt
という
chr id dist pos
22 rs100000 0 1000000
21 rs200000 0 2000000
みたいなどこかで見たようなファイルがあった時、chrで参照先ファイルを選んで、その参照先ファイル内でidを検索したいというタスクがあるとする。参照先ファイルはchr22.txtみたいな形になっているとする。一行ずつアレイで読み込んで処理することになる。
while read line; do
arr=(`echo $line`)
grep ${arr[1]} chr${arr[0]}.txt
done < sample.txt
${arr[0]}
もしくは$arr
とすると一番目の要素、${arr[1]}
とすると二番目の要素、となる。ちなみにアレイの内容すべてを表示するのはarr[*]
もしくはarr[@]
である。