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[@] である。