foreach没有匹配-C shell脚本

时间:2009-10-31 09:53:20

标签: unix shell scripting foreach

我正在尝试编写我的第一个脚本来搜索名为test的文本文件中的给定模式。这是脚本:

#! /bin/csh
 echo -n "enter pattern: "
  set pattern = $<
    foreach word (`cat test`)
         echo $word | egrep $pattern
    end

当我尝试运行它时,我收到了一条消息:找不到匹配项。我怀疑问题是由(cat test)引起的。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

它必须是C shell ......?你可以学习使用awk搜索文件

awk 'BEGIN{
 printf "Enter Pattern: "
 getline pattern < "-"
}
$0 ~ pattern{
    print 
}
' myfile

答案 1 :(得分:1)

@Pat - 很高兴你修好了。循环遍历文件中的单词并在每个单元上运行egrep是一种奇怪的方法 - 我认为你正在学习C shell循环,而不是寻找最简洁的解决方案。您可以一次匹配整个文件:

egrep "\b$pattern\b" test

\b使grep匹配单词边界。

你对csh有我的同情编程 - 这里有一些值得深思的问题:Csh Programming Considered Harmful