2012-04-13 262 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