我有一个包含多行数据的文本文件(file1.txt)。
这个文本文件我用来将数据从目录A复制到另一个B.我的脚本查看表达式是否包含在存储在A中的文件的文件名中。
在目录A中,我使用另一个文本文件(file2.txt)来获取我想在脚本中排除的信息(如[bla][0-9][0-9][bla][0-9][0-9]
之类的行)。
set x = `grep '[bla][0-9][0-9][bla][0-9][0-9]' file1.txt`
foreach i ( $x )
cp A/*$i* B/.
end
例如file1.txt中的行:
bla11bla11
bla12bla12
bla13bla13
bla14bla14
bla15bla15
来自file2.txt的和grep结果必须为循环排除
bla11bla11
bla12bla12
我的脚本最终应该只使用以下行
bla13bla13
bla14bla14
bla15bla15
我该怎么做?
答案 0 :(得分:0)
一个简单的嵌套循环完全在csh中完成:
#!/bin/csh -f
set f = `grep 'bla[0-9][0-9]bla[0-9][0-9]' file1.txt`
set x = `grep 'bla[0-9][0-9]bla[0-9][0-9]' file2.txt`
echo "Files: $f"
echo "To be excluded from Files: $x"
set r = ( )
foreach i ( $f )
set skip = 0
foreach j ( $x )
if ("$i" == "$j") then
set skip = 1
break
endif
end
if ($skip == 0) set r = ($r $i)
end
echo "Result: $r"
在上面的示例文件上运行时的输出:
Files: bla11bla11 bla12bla12 bla13bla13 bla14bla14 bla15bla15
To be excluded from Files: bla11bla11 bla12bla12
Result: bla13bla13 bla14bla14 bla15bla15