2012-04-13 170 views
0

自從我使用csh格式化以來,我已經有一段時間了,而且我遇到了一些麻煩。事情似乎在Matlab中更容易執行,但是我需要在終端上執行此操作,因爲我試圖與之交互的程序。執行嵌套循環+ foreach + csh

所以這裏就是我想要做的:我有del.txt一個文件的結構是這樣

等。所以每個值都在它自己的行中,並且所有數據都有一列。我有一堆其他文件在我的目錄中。我想匹配說價值1(在這種情況下是1)與文件1和值2與文件2等,等等等等。因此,這裏就是我所做的...

代碼:

/斌/ 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匹配( STA)。我從來沒有做過的事情比在一個文件子集上使用csh進行簡單的迭代,我不知道如何將這些值引用到另一個文件中。任何幫助將不勝感激。我沒有找到一個簡單的方法來做到這一點,而不寫出所有的東西。我看了'for'和'while'命令..如果有一種簡單的方法可以做到,我沒有看到它。

乾杯, ķ

回答

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