2012-04-13 3 views
0

私はcshの書式設定を使用してからしばらくしていましたが、いくつか問題が少しありました。 Matlabで実行するのはずっと簡単ですが、私は対話しようとしているプログラムのために、ターミナルでこれを行う必要があります。だからここネストされたループを実行する+ foreach + csh

は、私が何をしたいのです:私はなど、この

のように構成されているファイルdel.txtを持っていますしたがって、各値はそれ自身の行にあり、すべてのデータに対して1つの列があります。私は私のディレクトリ内にある他のファイルの束を持っています。私は、値1(この場合は1)をファイル1と一致させ、値2をファイル2などと一致させたいと思います。 !

/binに/ cshの

のforeach(cat del.txt

のforeach STA(ls *.HHZ

echo a is $a 

echo $sta 


cat <<END>>macro.m 

のR $:だからここ

コードが...私がやったことですa

r $ sta

END

sac macro.m 

rm macro.m 

エンド

エンド

しかし私が達成することは、del.txtの値と各ファイルのすべてをループして、次のファイルに移動していることです私のディレクトリ内にあり、すべての値をループします。私は、これが正しい値を突き合わせるためのフォーマットを見つけ出すのに問題があります。私はスクリプトの中では、私はそれらが一致するようになるまではあまりないです。助けてください誰かが私が間違っていることを教えてもらえますか?私はforeachコマンドが各ファイルのすべてのコマンドを実行すると読んでいますが、これを回避する方法を見つけることができませんでした。 Del.txtから値1を取り出し、ディレクトリからファイル1(sta)にマッチさせ、ループを終了してからdel.txtから値2を取り出し、ディレクトリ2からファイル2にマッチさせますsta)。私は、ファイルの一部のサブセットでcshを使用した単なる反復以上のことをしたことはありません。私は値を互いにどのように参照するのか分かりません。どんな助けでも大歓迎です。私はすべてを書くことなくこれを行う簡単な方法を発見していない。私は 'for'と 'while'のコマンドを見ました。それを行う簡単な方法があると私はそれを見ません。

乾杯、 K

答えて

0

私が正しく理解しています場合、あなたは、文字列のtxtファイルの意志のリストを持っていて、それがファイルと一致します。私はあなたのこの特定の文で想定しています

私が一致する場合は(この場合は1されている)ファイル1

とあなたが一致することを意味値1を言いますファイルのファイル名を持つ1の文字列が1

ここでは、この仮定に基づいて可能な解決策があります(これはループでとにかくあなたを助ける):

#Store value in file.txt in a array 
set file_var = `cat file.txt` 
#Store file list in my_dir in a var 
set my_dir = <your dir path> 
set file_list_var = `ls $my_dir` 

#Let's print "file Match: for every match 
foreach var1 ($file_var) 
    foreach var2 ($file_list_var) 
      if("$var1" == "$var2") echo $var1 = $var2 : Match Found. 
    endif 
endif 
関連する問題